片段事务显示不显示我的隐藏片段

时间:2014-12-18 17:43:53

标签: android android-fragments fragmenttransaction

这应该是一项微不足道的任务,但不知怎的,我设法在执行它时失败了。

第1步:

添加片段

getSupportFragmentManager().beginTransaction().add(R.id.layFragment, Fragment1.newInstance(), "FragmentTag1").commit();

第2步:

隐藏片段并添加另一个片段。第二个应该在屏幕上可见

getSupportFragmentManager().beginTransaction().hide(getSupportFragmentManager().findFragmentByTag("FragmentTag1")).commit();

getSupportFragmentManager().beginTransaction().add(R.id.layFragment, Fragment2.newInstance()),"FragmentTag2").commit();

第3步:

删除第二个片段,再次显示第一个片段

getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentByTag("FragmentTag2")).commit();
getSupportFragmentManager().beginTransaction().show(getSupportFragmentManager().findFragmentByTag("FragmentTag1")).commit();

第1步和第2步工作正常。在第3步,Fragment2被删除但Fragment1不会再次显示,即使它当前是隐藏的。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

第一次你必须添加你的片段,下次再用你想要的片段替换片段。

FragmentTransaction ft = getFragmentManager()
            .beginTransaction();
ft.replace(R.id.details, your fragment instance);
ft.addToBacksStack(null);
ft.commit();

答案 1 :(得分:0)

而不是叫Hide&添加重新删除&显示Just Call:

getSupportFragmentManager().beginTransaction()
    .replace(int containerViewId, Fragment fragment, String tag)

替换添加到容器中的现有片段。