executePendingTransactions冲突

问题描述 投票:0回答:2

我有一些全局加载fragment-带有加载指示器的半透明视图,我使用它来显示加载过程,而不是在每个片段中创建加载指示器,而是将它附加到add事务中(也我正在使用同一实例,我不是每次都创建新片段)。

问题是某些“加载”过程非常快,并且似乎在remove()执行事务之前调用了TransactionManager,换句话说,我正在尝试删除尚未添加的片段([ C0]),要解决此问题,我尝试在loadingFragment.isAdded()==false方法之后使用executePendingTransactions(),它可以解决此问题,但会导致另一个问题:

FragmentManager已在执行事务

余额在哪里?如何避免这种冲突?

android android-fragments
2个回答
2
投票

我可以提出两种解决方案:

  1. 使用add()与此调用同步提交添加片段。

  2. 这是一种解决方法。等到添加完成。您可以在主线程上发布删除调用。如果它不起作用,请添加一些延迟。


0
投票

不幸的是我无法使用片段来解决这个问题。

[FragmentTransaction.commitNow()不需要堆栈,而且我的大部分片段都需要堆栈,因此仅用于commitNow()commitNow()也可能与LoadingFragment冲突,并且延迟发布对我来说没有意义。

相反,我使用的是自定义布局(在单个活动应用程序内部)。

© www.soinside.com 2019 - 2024. All rights reserved.