有没有人注意到Android 11的生命周期有什么明显的变化?
我的应用程序在安卓11之前的OSes上运行得很好,但在我的Pixel4上每次都会崩溃,并显示错误:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Fragment host has been destroyed在引擎盖下有没有其他人注意到的影响他们在Android 11上的应用程序的东西?
我使用了不同的文件,用于活动和片段。
我有一个调用onCreate的TreasureHuntActivity:
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, TreasureHuntMapFragment.newInstance(), "map-${index}").addToBackStack("map-${index}").commit()
fragmentManager.executePendingTransactions()在它调用的TreasureHuntMapFragment中
val intent = Intent(context, MainUnityActivity::class.java)
activity.startActivityForResult(intent, 33)
Handler().postDelayed({ activity.pushQuestionHintFragment() }, 1000)回到TreasureHuntActivity中,它调用TreasureHuntQuestionHintFragment来显示
fun pushQuestionHintFragment() {
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, TreasureHuntQuestionHintFragment.newInstance(), "questionHintFragment-${specificQuestionId}").addToBackStack("questionHintFragment-${specificQuestionId}").commitAllowingStateLoss()
fragmentManager.executePendingTransactions()
}这在之前的Android11上工作得很好,但之前提到的在11+上就不能工作了。通过进一步的调试,它将fragmentManager显示为null,这之前在TreasureHuntActivity中全局声明为var fragmentManager = supportFragmentManager
如果我在Pixel2(安卓的早期版本)上调试,fragmentManager不是null,而是BackStackEntry。
我已经尝试将生命周期的依赖更新为2.2.0或2.3.0-alpha07,或者将片段更新为1.3.0,但仍然没有结果。
在调用pushQuestionHintFragment()时,在运行Android11时,fragmentManager仅为空。如果我调试,this.isDestroyed也是真的,但只在Android11上。
发布于 2020-11-19 00:04:23
使用supportFragmentManager而不是fragmentManager
fun pushQuestionHintFragment() {
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(
R.id.container,
TreasureHuntQuestionHintFragment.newInstance(),
"questionHintFragment-${specificQuestionId}").addToBackStack("questionHintFragment-${specificQuestionId}")
.commitAllowingStateLoss()
supportFragmentManager.executePendingTransactions()
}https://stackoverflow.com/questions/63994323
复制相似问题