我正在尝试替换容器中的片段。
对于视觉材料,我可以看到更改并且新片段被初始化。
但是,如果我检查容器中的哪个对象,它仍然给我以前替换的旧片段,导致问题,我不能调用新片段的方法,因为它没有被替换为100 %。
这里我的代码:
fragmentTransaction = getFragmentManager().beginTransaction();
Volumefragment volumefragment = new Volumefragment();
System.out.println("Change Fragment");
fragmentTransaction.replace(R.id.framecontainer,volumefragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
if(getFragmentManager().findFragmentById(R.id.framecontainer) instanceof Dummyfragmenet){
System.out.println("Wrong object");
}
}
答案 0 :(得分:3)
当你使用Fragment事务进行提交时,你真正在做的是安排替换那个片段。它不会立即发生,并且当UI线程准备好它时它将被替换。因此,当片段事务未完全完成时,将调用您的打印(因为它是异步发生的)。如果要确保在提交之后和打印之前更换了片段,请添加以下内容:
getFragmentManager().executePendingTransactions()
为了澄清并从文档中获取“在使用FragmentTransaction.commit()提交FragmentTransaction之后,它被安排在进程的主线程上异步执行。” 访问https://developer.android.com/reference/android/app/FragmentManager.html#executePendingTransactions()