android地图在恢复片段后停止响应

时间:2013-05-07 01:23:26

标签: android google-maps fragment

下面列出了我控制地图的基本代码。我稍后会做一些非常高级的东西。在onResume()之前,一切似乎都很完美。

这是布局,您可以使用多个片段在1个单个活动中浏览应用。此mapFragment包含在片段内。这很好用。然而,当我添加另一个片段并在后面的堆栈上推送它时,当我稍后再回到它时,地图没有响应。

我尝试通过将setupMaps();的号码转移到onResume()来解决此问题,但是当gMapsgMaps = mapFragment.getMap();获取setViews()时,这导致 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { root = inflater.inflate(R.layout.fragment_maps, container, false); setupMaps(); return root; } private void setupMaps() { gMaps = null; fm = getActivity().getSupportFragmentManager(); mapFragment = SupportMapFragment.newInstance(); android.support.v4.app.FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.flMapContainer, mapFragment).commit(); } @Override public void onResume() { super.onResume(); mapFragment.onResume(); setViews(); } private void setViews() { gMaps = mapFragment.getMap(); getData(); // initializes overlays, markers, polygons etc. } @Override public void onPause() { mapFragment.onPause(); super.onPause(); } 为空1}}。

我该如何处理?

{{1}}

3 个答案:

答案 0 :(得分:7)

你在logcat中看到了什么吗?我之前遇到过类似的问题,我认为它与旧的地图片段的View在创建新的实例之前没有从其父ViewGroup中删除有关。这导致了重复片段的错误。

在创建SupportMapFragment的新实例之前,请尝试从flMapContainer中删除所有视图。

答案 1 :(得分:4)

实施Scott Stanchfield的解决方案: 在添加/替换另一个片段时调用cleanFrame()。

public void cleanFrame(){
FrameLayout FL = (FrameLayout) thisview.findViewById(R.id.myfragmentcontainer);
   FL.removeAllViewsInLayout();
}

答案 2 :(得分:0)

我在manifest.xml内禁用了硬件加速,之后一切开始成功:

<application android:hardwareAccelerated="false">
 ...
</application>