我最近将我的应用更改为面向 API 级别 28,并且还开始使用 androidx 而不是支持库。更改后,我注意到具有以下回溯的崩溃
Fatal Exception: java.lang.IllegalStateException: Failure saving state: active MyFragment{22caf6fc (04a7bbf5-8806-4a45-a25d-616ed244bf18) id=0x7f1000ff} was removed from the FragmentManager
at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2301)
at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:150)
at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:496)
at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:510)
at com.company.utils.MyAppCompatActivity.onSaveInstanceState(MyAppCompatActivity.java:161)
at android.app.Activity.performSaveInstanceState(Activity.java:1311)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1288)
at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:4166)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3577)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3633)
at android.app.ActivityThread.access$1300(ActivityThread.java:164)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1491)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
我所有的 Activity 都是从一个基本 Activity MyAppCompatActivity
扩展而来的,它从 AppCompatActivity
扩展而来。在 MyAppCompatActivity
的 onSaveInstanceState
方法中,我有几行日志。我在使用 FragmentStatePageAdapter
的 ViewPager 下实现了此 Activity 中的三个 fragment ,并且 Activity 本身没有覆盖 onSaveInstanceState
方法。
我浏览了一些接近于此的 SO 帖子,例如 this one和 this one ,但它看起来好像是在我们使用 FragmentManager
的方法自己管理 fragment 而不是使用 ViewPagerAdapter 处理它时发生的。我没有这样做,我所做的最接近常规流程的事情是重写 FragmentStatePageAdapter
的方法 instantiateItem
和 destroyItem
帮助我有一个方法来获取代码中的 fragment 引用,如 this SO answer 中给出的那样.
最佳答案
您使用的是哪个 fragment 库版本?有 an issue with 1.1.0-alpha01 .
关于android - 致命异常 : java. lang.IllegalStateException:保存状态失败: Activity fragment 已从 FragmentManager 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284088/