Я не могу выполнить Fragment popBackStack для очистки моего дочернего фрагмента

Здравствуйте, я получаю исключение ниже, когда выполняю Fragment popBackStack из метода onNewIntent моей Activity.

Ниже приведен журнал сбоя моего приложения.

10-11 16:08:49.750: E/AndroidRuntime(13831): FATAL EXCEPTION: main
10-11 16:08:49.750: E/AndroidRuntime(13831): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:466)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at com.xxx.view.DataSend.sendToBackFragment(DataSend.java:850)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at com.xxx.view.MyOneFragmentHolder.clearFragmentBackStack(MyOneFragmentHolder.java:117)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at com.xxx.view.MyOneFragmentHolder.clearBackStack(MyOneFragmentHolder.java:131)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at com.xxx.view.CustomTabsActivity.onNewIntent(CustomTabsActivity.java:1537)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1119)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:1726)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.ActivityThread.performNewIntents(ActivityThread.java:1738)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1746)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.ActivityThread.access$2300(ActivityThread.java:117)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:982)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.os.Looper.loop(Looper.java:130)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at android.app.ActivityThread.main(ActivityThread.java:3687)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at java.lang.reflect.Method.invokeNative(Native Method)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at java.lang.reflect.Method.invoke(Method.java:507)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
10-11 16:08:49.750: E/AndroidRuntime(13831):    at dalvik.system.NativeStart.main(Native Method)

Теперь вот моя иерархия фрагментов в моей FragmentActivity.

  1. моя FragmentActivity содержит один ViewPager
  2. Теперь мой ViewPager содержит пять Fragment .
  3. In that five fragment second fragment,third fragment contain Nested Fragment by below logic.
    1. I have load simple Fragment with FrameLayout then perform my real Fragment in that and when user do click list item of that fragment it will again load Fragment in this Framelayout.

Итак, моя активность onNewIntent выполняет popBackStack для моего второго фрагмента ViewPager, который работает как контейнер.


person Herry    schedule 11.10.2013    source источник
comment
Я также пробовал совершить commitAllowingStateLoss, но это создает тот же сбой, что и в методе фиксации.   -  person Herry    schedule 11.10.2013


Ответы (1)


Ну, во-первых, у меня возникло множество проблем, когда я использовал фрагмент внутри другого фрагмента (как правило, это не очень хорошая практика). Прочитайте этот ответ это может тебе помочь. Также трассировка стека говорит, что вы пытаетесь вернуть стек после вызова метода saveInstanceState, вы не предоставили никакого кода, но я предполагаю, что вы не можете его использовать после того, как приложение сохранило свой экземпляр и, скорее всего, остановилось/было уничтожено

Привет Мак

person Maciej Boguta    schedule 11.10.2013