我的问题是在我的 MapFragment 中没有调用 onCreateView 来重新实例化/创建在 onPause 和 onStop 下删除的 Fragment 视图(一个 MapView 容器),因此为空。因此,由于地图视图为空,片段内容显示为黑色。
这只发生在一种情况下,那就是当我关闭并再次打开屏幕时。当我在暂停后滑回地图视图片段时,onCreateView 行为正常。由于我正在开发基于位置的游戏,因此屏幕需要经常关闭。
这里的任何帮助将不胜感激!=)
我有一个 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;
}