私の問題は、onPause と onStop の下で削除されたフラグメント ビュー (MapView コンテナー) を再インスタンス化/作成するために、MapFragment で onCreateView が呼び出されないため、null になることです。したがって、マップ ビューが null であるため、フラグメント コンテンツは黒く表示されます。
これは 1 つの条件下でのみ発生し、それは画面の電源をオフにして再度オンにしたときです。onCreateView は、一時停止した後に mapview Fragment にスワイプすると正常に動作します。私はロケーションベースのゲームに取り組んでいるので、画面を頻繁にオフにする必要があります.
ここで何か助けていただければ幸いです。=)
ViewPager、FragmentPagerAdapter などの 3 つのタブを持つ FragmentActivity があります。
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;
}