如何知道片段事务已完成?

4
我想要连续进行两个Fragment事务。
Fragment1 fragment1 = new Fragment1();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment1);
transaction.addToBackStack(null);
transaction.commit();

Fragment2 fragment2 = new Fragment2();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment2);
transaction.addToBackStack(null);
transaction.commit();

然而,如果我这样做,会有一些并发问题。是否有办法实现回调函数,以便在第一个事务完成后立即开始第二个事务?


“会有一些并发问题”--肯定不应该出现。事务应该按照提交顺序发生。 - Kevin Coppock
1个回答

2

您可以手动刷新队列,从而执行待处理的片段事务。您需要调用的函数是:

    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    ft.replace(android.R.id.content, fragment, name).addToBackStack(null).commit();
    fm.executePendingTransactions();

通过调用fm.executePendingTransactions();,您可以在继续之前强制执行所有待处理的操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接