【发布时间】:2014-12-29 03:39:51
【问题描述】:
我的 Android 应用确实有点问题。
我的应用程序包含一个导航抽屉,用于在应用程序内部导航。 例如
导航抽屉:
- 概述
- 搜索
- 用户
- 东西
当应用程序启动时,我将加载概览片段。 如果用户单击其他项目,我将更改片段:
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, fragment, TAG);
transaction.addToBackStack(null);
transaction.commit();
现在的问题是,当用户切换,例如,从 1 > 2 > 4 > 3 并且他们按下返回键时,它只会让他返回一个片段。 3 > 4 > 2 > 1
所以我添加了代码,这将使他在每次 Backpress 时回到 Fragment 1。
public boolean onKeyDown(int keyCode, KeyEvent event) {
int exit = 0;
if (keyCode == KeyEvent.KEYCODE_BACK) {
getFragmentManager().popBackStack();
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = new Overview();
fm.beginTransaction().add(R.id.frame_container, fragment).addToBackStack("fragBack").commit();
return false;
}
return false;
}
好的,一开始没问题,但现在我在更深层次上添加了更多片段,但它们不应该在后按时返回片段 1。
举例
- 概述(主要片段)
- 搜索(返回键返回片段 1)
- 用户(返回键返回片段 1)
- Stuff(返回键返回片段 1)
4.1 细节(Back Key 回到 Fragment 4. Stuff)
如果有人知道我如何在我的应用中处理导航,那就太好了。
问候
【问题讨论】:
-
是否有特定的原因使后退按钮的行为如此?通常用户会希望后退按钮将他们带到上一个屏幕,而不是主屏幕。
-
transaction.replace将删除您当前的片段并添加新片段。当进入更深层次的片段时,您应该使用transaction.add,以便将其添加到后台堆栈中。 -
是的,所以应用程序的主要活动是概览,如果您从概览转到设置,然后再转到搜索,如果您按返回键,您不想返回设置
标签: android android-fragments navigation navigation-drawer fragment-backstack