2014-12-18 149 views
0

这应该是一个微不足道的任务,但不知何故,我设法失败执行它。片段事务显示不显示我的隐藏片段

步骤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

而不是调用隐藏&的添加删除重新显示&只需拨打:

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

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

0

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

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

请您详细介绍一下吗? – Alin