Android 当用片段本身替换片段时,“后退”按钮的正确行为应该是什么
我有3个片段(Main、About和Help) 我有一个带有3个选项的菜单(“显示主片段”、“显示关于片段”和“显示帮助片段”) 当我选择3个菜单选项之一时,我会:Android 当用片段本身替换片段时,“后退”按钮的正确行为应该是什么,android,android-fragments,Android,Android Fragments,我有3个片段(Main、About和Help) 我有一个带有3个选项的菜单(“显示主片段”、“显示关于片段”和“显示帮助片段”) 当我选择3个菜单选项之一时,我会: Fragment fragment = null; switch (position) { case 1: fragment = new MainFragment(); break; case 3:
Fragment fragment = null;
switch (position) {
case 1:
fragment = new MainFragment();
break;
case 3:
fragment = new HelpFragment();
break;
case 4:
fragment = new AboutFragment();
break;
default:
break;
}
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.addToBackStack(null);
ft.commit();
如果我添加2个、3个或更多不同的片段,它可以正常工作
但是如果我连续添加相同的片段,当我点击后退按钮时,它会显示相同的片段,而不是之前添加的片段
让我解释清楚
感谢并抱歉我的英语按照您的步骤进行,您添加了两次
main片段
,因此在步骤10中点击后退按钮后,它当然会再次显示,在后堆栈中还有另一个main片段
如果您不想再次显示主片段,请不要再次将
ManiFragment
添加到backbackback,那么您将返回到AboutFragment
,因为您总是调用ft.addToBackStack(null);如果你不想把它放在backbackback上,就跳过它吧。你为什么要在backbackback上添加帮助或碎片呢?是的,我想是这样的。我只是想确认一下。我解决了检查前一个片段是否相同的问题,如果是这种情况,我在添加第二个片段之前调用了popBackStack(),因此,如果用户连续添加相同的片段,则正确。谢谢你的回答