我正在学习片段和后堆栈的行为。
我有3个片段,我将此片段添加为ft.add(R.id.container, fragment);
。
我有两个话题:
1)。我将三个片段一个个地添加为add(id,fragment)
,还添加了ft.addToBackStack(tag);
。
然后当我BackPress时,将通过以下代码一一弹出:
String fragmentTag = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();
fm.popBackStack(fragmentTag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
在这种情况下,它可以正常工作。
2)。我将三个片段一个个地添加为add(id,fragment)
,在这里我只在ft.addToBackStack(tag);
中添加第一个片段。 第2个和第3个未添加到BackStack。
然后当我BackPress时,执行以下代码:
String fragmentTag = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName();
fm.popBackStack(fragmentTag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
它将给出第一个片段标签,但是,屏幕没有刷新。它仍然显示第三个片段。
我还尝试了fm.popBackStackImmediate();
和fm.popBackStack();
。
但是结果是一样的。为什么没有发生?
请指导我。谢谢。