• IllegalStateException: FragmentManager is already executing transactions


    页面为fragment+viewpager+fragment结构,直接打开,默认选中首个fragment正常,指定跳转到第3个再切回第1个fragment,报错如下:

    java.lang.IllegalStateException: FragmentManager is already executing transactions
    	at androidx.fragment.app.FragmentManager.ensureExecReady(SourceFile:1931)
    	at androidx.fragment.app.FragmentManager.execSingleAction(SourceFile:1967)
    	at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(SourceFile:311)
    	at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(SourceFile:249)
    	at androidx.viewpager.widget.ViewPager.populate(SourceFile:1244)
    	at androidx.viewpager.widget.ViewPager.populate(SourceFile:1092)
    	at androidx.viewpager.widget.ViewPager.setOffscreenPageLimit(SourceFile:856)
    	at com.xxx.xxx.fragment.HomeFragment.initVp(SourceFile:108)
    	at androidx.fragment.app.Fragment.performViewCreated(SourceFile:2987)
    	at androidx.fragment.app.FragmentStateManager.createView(SourceFile:546)
    	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(SourceFile:282)
    	at androidx.fragment.app.FragmentManager.executeOpsTogether(SourceFile:2189)
    	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(SourceFile:2100)
    	at androidx.fragment.app.FragmentManager.execPendingActions(SourceFile:2002)
    	at androidx.fragment.app.FragmentManager$5.run(SourceFile:524)
    	at android.os.Handler.handleCallback(Handler.java:938)
    	at android.os.Handler.dispatchMessage(Handler.java:99)
    	at android.os.Looper.loopOnce(Looper.java:210)
    	at android.os.Looper.loop(Looper.java:299)
    	at android.app.ActivityThread.main(ActivityThread.java:8306)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1073)
    

    通常在嵌套的fragment中出现,解决:
    根据fragment的容器,将fragmentManager设为childFragmentManager或parentFragmentManager

    val fragmentAdapter = FragmentAdapter(childFragmentManager, listFragment, tab)
    binding.viewPager.adapter = fragmentAdapter
    
  • 相关阅读:
    比瓴科技以何魅力吸引安全大牛?
    lvi-sam 总结
    Spring Boot、Spring Security登录认证及权限问题
    递归求阶乘和
    基于nodejs的疫情大数据展示与政策查询系统
    2022年06月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
    QCOM和其他常见芯片平台术语缩写
    【Git】IDEA 集成 Git
    65w 字!阿里分布式开发小册 Github 新开源!原理实践双飞
    二本蒟蒻的带牌退役感言(感谢两年来的acm经历)
  • 原文地址:https://blog.csdn.net/qq_34081612/article/details/140461659