Blankj / Blankj/AndroidUtilCode

FragmentManager is already executing transactions

未关闭
#1,464 4 条评论 0 个 reaction 已指派 1 人 已被 @Blankj 认领 在 GitHub 查看
bug
主要语言
Java
星标
33.6k
派生
10.6k
PR 合并指标
30 天内没有已合并 PR

描述

## 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)
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。