本文来自:fair-jm.iteye.com 转截请注明出处
官网的教程是在Activity下 在Fragment下在高德论坛找到一些方法 试了下可以显示 但是切换后总会有些问题
比如切换后就是新的了 切换后地图就不显示了
我这种方式可以在切换后保持地图状态 但是得限定屏幕为水平或者竖直 如果翻转的话也会报错
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.amap.api.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" > </com.amap.api.maps.MapView> </RelativeLayout>
代码:
package com.cc.android.map.fragment; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.amap.api.maps.AMap; import com.amap.api.maps.MapView; import com.cc.android.map.MainActivity; import com.cc.android.map.R; import com.cc.android.map.constant.Constants; public class MapFragment extends Fragment { private static MapFragment fragment=null; public static final int POSITION=0; private MapView mapView; private AMap aMap; private View mapLayout; public static Fragment newInstance(){ if(fragment==null){ synchronized(MapFragment.class){ if(fragment==null){ fragment=new MapFragment(); } } } return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (mapLayout == null) { Log.i("sys", "MF onCreateView() null"); mapLayout = inflater.inflate(R.layout.map, null); mapView = (MapView) mapLayout.findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mapView.getMap(); } }else { if (mapLayout.getParent() != null) { ((ViewGroup) mapLayout.getParent()).removeView(mapLayout); } } return mapLayout; } @Override public void onAttach(Activity activity) { super.onAttach(activity); ((MainActivity) activity).onSectionAttached(Constants.MAP_FRAGMENT); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onResume() { Log.i("sys", "mf onResume"); super.onResume(); mapView.onResume(); } /** * 方法必须重写 * map的生命周期方法 */ @Override public void onPause() { Log.i("sys", "mf onPause"); super.onPause(); mapView.onPause(); } /** * 方法必须重写 * map的生命周期方法 */ @Override public void onSaveInstanceState(Bundle outState) { Log.i("sys", "mf onSaveInstanceState"); super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 * map的生命周期方法 */ @Override public void onDestroy() { Log.i("sys", "mf onDestroy"); super.onDestroy(); mapView.onDestroy(); } }
这样可以保证在切换fragment的时候 地图不会不显示或者还原
注意要在清单中注明app的方向 不能让屏幕翻转
在Activity标签中写:
android:screenOrientation="portrait"
以上的代码出了点问题 就是不要返回一个单例 不然关掉再打开不会加载地图 改正:
public static Fragment getNewInstance(Context context) { MapFragment fragment = null; fragment = new MapFragment(); fragment.context=context; //context变为域 fragment.locationSource = new MyLocationSource(context); return fragment; }
不知道大家有什么方法 让高德地图显示在fragment中 在切换后依然保留原来的状态 翻转屏也不会有异常 欢迎讨论
相关推荐
高德地图 fragment 封装,定位,弹窗
程序的主要功能是在一个FragmentActivity中添加四个Fragment,再每个Fragment中去显示相应的手机信息。如:手机当前电量、手机内存占用率、获取手机上的已安装的应用程序名称等。
在实现JavaScript与Android交互的基础上,增加fragment与ViewPager,将高德地图组件的位置标注、路线规划、周边搜索、选址组件全部实现在AndroidAPP的应用!
在fragment中使用百度地图实现地图显示和点击自定义按钮定位更新
Zxing 在Fragment中实现二维码扫描 - aishang5wpj的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/aishang5wpj/article/details/46987031
在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment类似的方法。下面就给大家介绍下Android中ViewPager获取当前显示...
简单的修改了高德api中的离线地图,实现viewpager+fragment。将已下载和正在下载的资源放在另一个fragment中。高德的状态太乱还有一些下问题。希望一起研究学习
在实现JavaScript与Android交互的基础上,增加fragment与ViewPager,将高德地图组件的位置标注、路线规划、周边搜索、选址组件全部实现在AndroidAPP的应用!解决之前位置标注地图不显示以及选址组件关键字搜索结果不...
在Fragment中实现了调用dateDialog控件选取日期,并将日期显示出来
fragment的显示与隐藏,避免重复请求,浪费资源
有两个Fragment类:FragmentA和FragmentB,FragmentA全屏显示,FragmentB以一定尺寸显示在左下角。通过点击事件,交换FragmentA和FragmentB的尺寸和位置,并且不会覆盖父容器中的其他组件。
fragment的显示和隐藏 show hide
主要给大家介绍了Android在Fragment中实现监听触摸事件的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
实现JavaScript与Android交互,增加fragment与Activity通信,将高德地图组件的位置标注、路线规划、周边搜索、选址组件全部实现在AndroidAPP的应用!详情见博客:...
百度地图 Fragment之间切换黑屏现象解决方案 Code
多个Fragment的显示与隐藏demo
Android中在xml中静态添加Fragment 在activity_main.xml中添加LeftFragment和RightFragment
Android Fragment的使用。...功能:用一个Activity来管理两个Fragment,并且在其中一个Fragment中,点击按钮,影响到第二个Fragment。Activity中用list来管理Fragment。fragment布局采用垂直排列。
这几天做项目遇到一个问题,就是有这么一个页面是activity嵌套一个fragment1然后fragment1里放了一个viewpager,viewpager里放了几个fragment,本来只有这么一个页面,显示出来也没什么问题,现在加新需求,要求点击...
Fragment是Android3.0新增的概念,是碎片的意思,它和Activity很相像