【发布时间】:2015-11-17 05:01:41
【问题描述】:
我有四个片段:A、B、C、D。现在我从 A --> B 移动,所以我的代码将是
从A到B
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new B())
.addToBackStack("A")
.commit();
现在从 B 到 C 所以代码将是
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new C())
.addToBackStack("B")
.commit();
现在从 C 到 D。但我不想将 C 包含在 backstack 中,因为在后按时我不想显示 C 片段。
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new D())
.commit();
现在,当我按下返回按钮时,它将完美地工作到 A。现在,如果我再次重复相同的过程。现在再次按从 D 片段,我将直接发送到 A 片段而不是 B 片段。你能弄清楚我在上面的代码中犯的错误吗?
【问题讨论】:
-
@HareshChhelana 这不是问题显示没有调用添加到后台堆栈的问题。问题在于片段事务的工作方式。阅读此答案stackoverflow.com/questions/12529499/…
-
@Zach.. 其实我没有从那个链接得到
-
是的,它没有定义明确的答案,只是概述了它的工作原理。我遇到过类似的麻烦,基本上必须定义我自己的 backstackchangelistener 来定义返回堆栈调用会发生什么
标签: android android-fragments fragmentmanager