我的问题是我的MapFragment中没有调用onCreateView来重新实现/创建在onPause和onStop下删除的Fragment视图(一个MapView容器),因此为null。因此,由于地图视图为空,因此片段内容显示为黑色。
仅在一种情况下才会发生这种情况,即当我关闭屏幕并再次打开电源时。 onCreateView在暂停后刷回mapview片段时表现正常。由于我正在开发基于位置的游戏,因此屏幕需要经常关闭。
这里的任何帮助将不胜感激! =)
我有一个FragmentActivity,有三个选项卡,ViewPager,FragmentPagerAdapter,以及所有这些:
mapFragment = Fragment.instantiate(this, MapFragment.class.getName());
fragments.add(mapFragment);
fragments.add(Fragment.instantiate(this, NavHelperActivity.class.getName()));
fragments.add(Fragment.instantiate(this, CompassTabActivity.class.getName()));
mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
MapFragment onCreateView(..)执行此操作:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This is where you specify you activity class
Intent i = new Intent(getActivity(), MapTabActivity.class);
Window w = mLocalActivityManager.startActivity("tag", i);
mapViewContainer = w.getDecorView();
mapViewContainer.setVisibility(View.VISIBLE);
mapViewContainer.setFocusableInTouchMode(true);
((ViewGroup)
mapViewContainer).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
return mapViewContainer; }
onPause必须删除地图视图:
if (mapViewContainer != null) {
mapViewContainer.setVisibility(View.GONE);
((ViewGroup) mapViewContainer.getParent()).removeView(mapViewContainer);
mapViewContainer = null;
}
答案 0 :(得分:0)
编辑,更新,解决方案:
首先,不要显式地使用mapViewContainer。
设置类变量:
private static ViewGroup parent;
使用以下代码覆盖onStart:
@Override
public void onStart() {
super.onStart();
parent = mapViewContainer.getParent();
}
在onResume中,执行:
@Override
public void onResume() {
super.onResume();
if (mapViewContainer != null) {
((ViewGroup) parent).removeView(mapViewContainer);
((ViewGroup) parent).addView(mapViewContainer);
}
}
其余代码应保持不变。
感谢casaflowa。