Ошибка с двумя фрагментами в 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)