Android Fragment实际上没有被替换

时间:2017-10-12 20:59:33

标签: java android android-fragments

我正在尝试替换容器中的片段。 对于视觉材料,我可以看到更改并且新片段被初始化。 但是,如果我检查容器中的哪个对象,它仍然给我以前替换的旧片段,导致问题,我不能调用新片段的方法,因为它没有被替换为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");
    }
}

1 个答案:

答案 0 :(得分:3)

当你使用Fragment事务进行提交时,你真正在做的是安排替换那个片段。它不会立即发生,并且当UI线程准备好它时它将被替换。因此,当片段事务未完全完成时,将调用您的打印(因为它是异步发生的)。如果要确保在提交之后和打印之前更换了片段,请添加以下内容:

getFragmentManager().executePendingTransactions()

为了澄清并从文档中获取“在使用FragmentTransaction.commit()提交FragmentTransaction之后,它被安排在进程的主线程上异步执行。” 访问https://developer.android.com/reference/android/app/FragmentManager.html#executePendingTransactions()