这应该是一项微不足道的任务,但不知怎的,我设法在执行它时失败了。
第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不会再次显示,即使它当前是隐藏的。
有什么想法吗?
答案 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)
替换添加到容器中的现有片段。