Blankj / Blankj/AndroidUtilCode
FragmentManager is already executing transactions
- Dominant language
- Java
- Stars
- 33.6k
- Forks
- 10.6k
- PR merge metrics
- No merged PRs in 30d
Description
## 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)
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.