我有一些全局加载fragment
-带有加载指示器的半透明视图,我使用它来显示加载过程,而不是在每个片段中创建加载指示器,而是将它附加到add
事务中(也我正在使用同一实例,我不是每次都创建新片段)。
问题是某些“加载”过程非常快,并且似乎在remove()
执行事务之前调用了TransactionManager
,换句话说,我正在尝试删除尚未添加的片段([ C0]),要解决此问题,我尝试在loadingFragment.isAdded()==false
方法之后使用executePendingTransactions()
,它可以解决此问题,但会导致另一个问题:
FragmentManager已在执行事务
余额在哪里?如何避免这种冲突?
我可以提出两种解决方案:
使用add()
与此调用同步提交添加片段。
这是一种解决方法。等到添加完成。您可以在主线程上发布删除调用。如果它不起作用,请添加一些延迟。
不幸的是我无法使用片段来解决这个问题。
[FragmentTransaction.commitNow()
不需要堆栈,而且我的大部分片段都需要堆栈,因此仅用于commitNow()
的commitNow()
也可能与LoadingFragment
冲突,并且延迟发布对我来说没有意义。
相反,我使用的是自定义布局(在单个活动应用程序内部)。