以下是我控制地图的基本代码,稍后我会做一些非常高级的操作。一切都似乎很完美,直到
这是布局,您可以通过一个活动中的多个片段浏览应用程序。此
我尝试通过将我的调用移到
我该如何处理这种情况?
onResume()
。这是布局,您可以通过一个活动中的多个片段浏览应用程序。此
mapFragment
包含在一个片段中。这很好用。但是,当我添加另一个片段并将其推送到后台堆栈时,当我以后回来时,地图无响应。我尝试通过将我的调用移到
onResume()
中来解决这个问题,但这导致当我从 setViews()
中获取它时,gMaps = mapFragment.getMap();
会为空。我该如何处理这种情况?
@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();
}
transaction.add(
替换为transaction.replace(
似乎可以解决问题。我仍在测试中,所以我不能百分之百确定这是正确的修复方法,但也许这个提示会帮助其他人。 - Bianca Daniciuc