【发布时间】:2013-04-30 20:38:21
【问题描述】:
下面列出的是我控制地图的基本代码。我稍后会做一些非常高级的东西。一切似乎都很完美,直到onResume()。
这是布局,您可以在 1 个带有多个片段的单个 Activity 中浏览应用程序。这个mapFragment 包含在片段中。这工作正常。但是,当我添加另一个片段并将其推送到后堆栈时,当我稍后返回它时,地图没有响应。
我尝试通过将我对setupMaps(); 的调用移动到onResume() 来解决此问题,但是当我从gMaps = mapFragment.getMap(); 中的setViews() 获取它时,这导致gMaps 为空。
我应该如何处理?
@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();
}
【问题讨论】:
-
尝试调用 invalidate()
-
嗨,我认为上面的代码可能还有另一个问题。我也有类似的情况,用
transaction.replace(替换transaction.add(似乎可以解决问题。我仍在测试它,所以我不能 100% 确定这是正确的解决方法,但也许这个提示会对其他人有所帮助。
标签: android google-maps fragment