2

こんにちは、 Activity の onNewIntent メソッドから Fragment popBackStack を実行しているときに、例外を下回っています。

以下は私のアプリケーションクラッシュログです。

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 の Fragment 階層があります。

  1. 私の FragmentActivity には 1 つの ViewPager が含まれます
  2. 今、私の ViewPager には 5 つの Fragment が含まれています。
  3. その 5 つのフラグメントの 2 番目のフラグメント、3 番目のフラグメントには、以下のロジックによってネストされたフラグメントが含まれます。
    1. FrameLayout を使用して単純な Fragment をロードし、その中で実際の Fragment を実行します。ユーザーがそのフラグメントのリスト項目をクリックすると、この FrameLayout に Fragment が再びロードされます。

したがって、私の Activity onNewIntent は、コンテナーとして機能する ViewPager の 2 番目の Fragment に対して popBackStack を実行します。

4

1 に答える 1