Android片段中的后退按钮支持

时间:2014-03-05 08:54:22

标签: android android-fragments back-stack

我正在开发一个利用片段的继承Android项目。 mainactivity有一个侧面菜单抽屉,允许用户点击一个项目列表,每个项目在另一个文件中打开一个新的片段。

现在,按后退按钮会突然关闭应用程序。我希望后退按钮工作,以便它将用户带回到先前查看过的片段,当用户处于第一个观看片段时,按下后退按钮将带来应用程序退出确认框。

我知道我应该使用addToBackStack(),但我不确定如何在我的代码中实现它。

以下是选择项目时最初处于mainactivity的代码:

FragmentManager fm = getFragmentManager();
switch (position) {
case 0:
  if (fragmentManager.findFragmentById(R.id.content_frame != null) {
    Fragment currentFragment = fragmentManager.findFragmentById(R.id.content_frame);
    fm.befineTransaction().remove(currentFragment).commit();
    fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
  }
  Item0 item1Fragment = new Item0();
  fm.beginTransaction().replace(R.id.content_frame, item0Fragment).commit();
  break;

案例1以后是相同的,除了Item0 / item0Fragment引用被替换为它们各自的值。

我对片段很新,但从我所看到的,代码首先检测活动是否有片段的帧,如果是,它会删除当前片段,并完全清除片段后栈。然后它创建一个新片段,并用新的片段替换当前片段。

这是我的代码,目前经过一些更改,似乎有效,除了我将在代码后描述的一些问题:

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
switch (position) {
case 0:
  Item0 item1Fragment = new Item0();
  ft.replace(R.id.content_frame, item0Fragment).addToBackStack(null).commit();
  break;

上述修改后的代码提供了正确的导航,但以下情况除外:

  1. 当我回到第一个片段时,按下后退按钮会删除该片段并在屏幕上显示一个空片段,然后按下一个后退按钮将关闭该应用。理想的行为是,第一个片段上的后退按钮会弹出一个确认按钮来关闭应用程序。

  2. 当点击并选择侧面菜单上的项目时,我调用mItemList.setItemChecked(position)。如果点击后退按钮以便选择上一个选项,我该如何调用更新?

  3. 有谁知道如何使这项工作?

    感谢。

1 个答案:

答案 0 :(得分:1)

你检查过developer.android吗?以下是他们的解释。 http://developer.android.com/training/implementing-navigation/temporal.html#back-fragments