Ошибка с двумя фрагментами в SupportMapFragment

Итак, у меня есть действие, которое содержит вкладки, каждой вкладке назначен фрагмент, так что вы можете перемещаться по фрагментам с помощью вкладок. В двух из этих вкладок мне нужно загрузить карту (с разной информацией о каждой из них, разными пинами и т. Д.), Проблема в том, что она загружает только первую, я использую этот код для назначения каждой вкладке желаемого фрагмента (это адаптер работает нормально).

@Override
public Fragment getItem(int pos) {
    switch (pos) {
        case 0:
            return new SearchFragment();
        case 1:
            return new ParkFragment();
        case 2:
            setActiveSessionsFragment();
            return mActiveSessionsFragment;
        case 3:
            return new ChoosePaymentMethodFragment();
        default:
            return new ParkFragment();
    }
}

в случае 0 и 2 те, которые загружают карту, если я заменю любой из них на любой другой фрагмент, тот с картой работает нормально, но если оставить оба, приложение вылетает. В обоих фрагментах я загружаю карту в FrameLayout следующим образом:

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/map_container_search_tab"
    android:background="@color/gray"></FrameLayout>

И я создаю их программно:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    //Create a new map fragment
    SupportMapFragment mapFragment = SupportMapFragment.newInstance();
    getFragmentManager().beginTransaction().add(R.id.map_container_search_tab, mapFragment).commit();
    mapFragment.getMapAsync(this);
}

Однако у меня нет ни метода onDestroy, ни onDestroyView, я пытался реализовать их с помощью того, что видел в других ответах, но он не работает, и я пытался решить эту проблему самостоятельно, например, целую неделю. Это метод, который я попробовал, но безуспешно

public void onDestroyView() {
    super.onDestroyView();
    if (mMap != null) {
        getFragmentManager().beginTransaction()
                .remove(getFragmentManager().findFragmentById(R.id.map_container))
                .commit();
    }

Это logcat, когда он падает:

05-16 15:09:33.540 24971-24971/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.parso.mobile.android, PID: 24971
                                               java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
                                                   at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1489)
                                                   at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1507)
                                                   at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:634)
                                                   at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:613)
                                                   at com.parso.mobile.android.fragments.SearchFragment.onActivityCreated(SearchFragment.java:108)
                                                   at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1970)
                                                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092)
                                                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
                                                   at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                                                   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
                                                   at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
                                                   at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
                                                   at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
                                                   at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
                                                   at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:514)
                                                   at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:946)
                                                   at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2910)
                                                   at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
                                                   at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)
                                                   at com.parso.mobile.android.MainActivity.onParkingSessionCreated(MainActivity.java:240)
                                                   at com.parso.mobile.android.fragments.ConfirmSessionFragment$CreateParkingSessionTask.onPostExecute(ConfirmSessionFragment.java:213)
                                                   at com.parso.mobile.android.fragments.ConfirmSessionFragment$CreateParkingSessionTask.onPostExecute(ConfirmSessionFragment.java:189)
                                                   at android.os.AsyncTask.finish(AsyncTask.java:632)
                                                   at android.os.AsyncTask.access$600(AsyncTask.java:177)
                                                   at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                   at android.os.Looper.loop(Looper.java:135)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5538)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)

0 ответов

Другие вопросы по тегам