假设我有一项活动,视图中有两个占位符:
<RelativeLayout>
<RelativeLayout id="fg_1" ...>
<RelativeLayout id="fg_2 ...>
</RelativeLayout>
现在一旦发生了什么事,我将通过这些代码在视图中添加一个片段:
private void showFragment(Fragment fragment, int id) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(id, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
例如,当我触发动作1时,Fragment1将显示,当触发action2 Fragment2将显示时。
现在当我点击后面的菜单时,在我看来,Fragment2将会消失,当我再次单击后退菜单时,Fragment1将会消失,一旦我再次单击后退菜单,应用程序就会退出。
然而即使我单击后退菜单,应用程序也会退出,addToBackStack
似乎无法正常工作。
我错过了什么吗?
答案 0 :(得分:0)
我想说你必须换成相同的容器。
这里你已经将2个相对布局作为容器。
<RelativeLayout>
<RelativeLayout id="fg_1" ...>
<RelativeLayout id="fg_2 ...>
</RelativeLayout>
应该是什么样的
<RelativeLayout>
<RelativeLayout id="fg_1" ...>
</RelativeLayout>
将片段替换为1个相对布局( fg_1 )容器。
如果有任何问题,请告诉我。
希望它会对你有所帮助。
修改强>
确保使用相同的FragmentManager,相同的片段。意味着我在2个月之前遇到了同样的问题,我在一个类中使用了 android.app.FragmentManager 而且 android.support.v4.app.FragmentManager < / strong>在其他类中。
可能会帮助你。
答案 1 :(得分:0)
从代码中删除addBackStack(null)
方法。点击后退后按退出应用程序。
private void showFragment(Fragment fragment, int id)
{
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(id, fragment);
fragmentTransaction.commit();
}