【发布时间】:2014-04-24 17:04:20
【问题描述】:
好的,这是我的问题,我有三个片段,我们称它们为 [1]、[2] 和 [3]。
这是我希望他们遵循的路径:
[1] > [2] > [3] >(后退键)> [1]
由于某种原因,这只有效一次,当我尝试进行第 2 轮时,会发生以下情况:
[1] > [2] > [3] >(back-key)> [1] > [2] > [3] >(back-key)> [3] >(back-key)> 退出
也就是说,当我第二次到达 [3] 并按下后退按钮时,没有任何反应,如果我再次按下我的应用程序将退出到 android。 (从不返回 [1])
我很确定这与 addToBackSack 方法有关,但我不能完全确定它。
这是我的代码
[A]
public void onClick(View v) {
Fragment fragment = new [B]Fragment();
FragmentManager fm = this.getActivity().getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.addToBackStack(null);
transaction.commit();
break;
}
[B]
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Fragment fragment = new [C]Fragment();
FragmentManager fm = this.getActivity().getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.commit();
}
我没有在 [B] 上使用 addToBackStack,因为我不想让 android 记住这个交易,对吗?
谢谢!
【问题讨论】:
-
一般来说,使用
Fragments构建导航层次结构可能非常棘手,并且您经常会遇到您所描述的问题。考虑仅使用Activities在您的应用中创建导航层次结构,并使用Fragments显示这些Activities中的内容。 -
@XaverKapeller 在 OP 的问题中将“fragment”替换为“activity”,然后告诉我您的“建议”如何解决他的问题。
-
问题是,新的 ADT 插件有点鼓励您尽可能使用片段(去尝试一下,默认情况下它会创建一个内部带有片段的活动)。我正在使用活动来分隔我的应用程序的不同部分主要 |设置。但在这些部分中,我使用片段。一定有办法让导航正确!
标签: android android-fragments navigation