• 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
    
  • 相关阅读:
    Python学习三(面向对象)
    硬件设计哪些事-PCB设计那些事
    MySQL 自定义函数时:This function has none of DETERMINISTIC, NO SQL 解决方案
    神经网络——循环神经网络(RNN)
    mac挂载阿里云盘做本地盘【webdav-aliyundriver】【CloudMounter】
    Windows 10 python pcl 安装与测试
    Shell(2)数值运算与判断
    算法,排序
    C++基础(3)——类与对象
    Ansible自动化运维工具(三)
  • 原文地址:https://blog.csdn.net/qq_34081612/article/details/140461659