【发布时间】:2015-01-04 21:09:49
【问题描述】:
我有一个带有导航抽屉的应用程序,其中包含 Google 地图片段和其他一些片段。我正在以编程方式创建 SupportMapFragment 并将其放入地图容器中的自定义 fragment_map 布局中。
问题是我必须从数据库中向地图添加超过 2000 多个标记,但不想在每次设备旋转时都再次填充它们。我认为setRetainInstance(true) 会解决这个问题,但它不起作用 — 我得到了一张全新的地图,没有标记和相机在 0, 0 位置改变方向。示例应用程序在保留距离的情况下运行良好,但它们都在使用 FragmentActivity,这不是我的情况。这里的碎片有什么问题?
GoogleMapsFragment.java:
public class GoogleMapsFragment extends Fragment implements OnMapReadyCallback {
private SupportMapFragment mapFragment;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_map, container, false);
FragmentManager fm = getChildFragmentManager();
mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container);
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
mapFragment.getMapAsync(this);
mapFragment.setRetainInstance(true);
fm.beginTransaction().add(R.id.map_cont, mapFragment).commit();
}
return rootView;
}
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.addMarker(new MarkerOptions().position(new LatLng(5, 5)));
// a long code with map initialization and adding markers here
// ...
}
}
【问题讨论】:
-
我认为这是因为嵌套片段。请参考此链接stackoverflow.com/questions/14850573/…
标签: android google-maps android-fragments