AndroidUtilCode
AndroidUtilCode copied to clipboard
FragmentManager is already executing transactions
FragmentManager is already executing transactions
在commitid:28f24faf597ef92771d97780eac7d8e69ad145a4 中对FragmentUtils第1528行处增加了一行 fm.executePendingTransactions(); 之后,特定常见出现FragmentManager is already executing transactions异常崩溃,退回1.30.5版本就不会崩溃
- AndroidUtilCode 的版本:1.30.6
- 出现 Bug 的设备型号:HUAWEI MATE30 pro
- 设备的 Android 版本:API 30
验证demo
class TestActivity : AppCompatActivity(R.layout.activity_test), Test1Fragment.OnInteractionListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
FragmentUtils.replace(supportFragmentManager, Test1Fragment(), R.id.container_1)
}
override fun showComments() {
FragmentUtils.replace(supportFragmentManager, Test2Fragment(), R.id.container_2)
}
}
class Test1Fragment : Fragment(R.layout.fragment_test1) {
var listener: OnInteractionListener? = null
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is OnInteractionListener) {
listener = context
}
}
override fun onResume() {
super.onResume()
listener?.showComments()
}
interface OnInteractionListener {
fun showComments()
}
}
class Test2Fragment : Fragment(R.layout.fragment_test2)
异常堆栈
Caused by: java.lang.IllegalStateException: FragmentManager is already executing transactions
at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1919)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1984)
at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:600)
at com.blankj.utilcode.util.FragmentUtils.operate(FragmentUtils.java:1529)
at com.blankj.utilcode.util.FragmentUtils.replace(FragmentUtils.java:1158)
at com.blankj.utilcode.util.FragmentUtils.replace(FragmentUtils.java:802)
+1
+1
+1 现在google要求强制适配Android 11了,所以util也需要升级,不升级谈不出来提示,升级但是FragmentUtil会导致闪退,大佬速度更新啊,哪怕回滚呢。
+1