android - 致命异常 : java. lang.IllegalStateException:保存状态失败: Activity fragment 已从 FragmentManager 中删除

标签 android android-fragments androidx

我最近将我的应用更改为面向 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 扩展而来。在 MyAppCompatActivityonSaveInstanceState 方法中,我有几行日志。我在使用 FragmentStatePageAdapter 的 ViewPager 下实现了此 Activity 中的三个 fragment ,并且 Activity 本身没有覆盖 onSaveInstanceState 方法。

我浏览了一些接近于此的 SO 帖子,例如 this onethis one ,但它看起来好像是在我们使用 FragmentManager 的方法自己管理 fragment 而不是使用 ViewPagerAdapter 处理它时发生的。我没有这样做,我所做的最接近常规流程的事情是重写 FragmentStatePageAdapter 的方法 instantiateItemdestroyItem帮助我有一个方法来获取代码中的 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/

相关文章:

android - 使用 fragment 时更改 ActionBar

java - 将自定义边框添加到警报对话框生成器布局

android - 无法实例化 fragment com.swmansion.rnscreens.Screen

android - PSPDFKit 在 Android 上的缓存上保留注释

java - Android - 点击alertDialog内的按钮

android - 何时在 DialogFragment 中使用 DatePickerDialog 而不是 DatePicker?

android - 如何使 Android Jetifier 与数据绑定(bind)一起工作?

android - 如何恢复媒体播放器?

Android setUserVisibleHint 永远不会被调用?

java - Fragment 包中的空参数