我正在开发一个利用片段的继承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;
上述修改后的代码提供了正确的导航,但以下情况除外:
当我回到第一个片段时,按下后退按钮会删除该片段并在屏幕上显示一个空片段,然后按下一个后退按钮将关闭该应用。理想的行为是,第一个片段上的后退按钮会弹出一个确认按钮来关闭应用程序。
当点击并选择侧面菜单上的项目时,我调用mItemList.setItemChecked(position)。如果点击后退按钮以便选择上一个选项,我该如何调用更新?
有谁知道如何使这项工作?
感谢。
答案 0 :(得分:1)
你检查过developer.android吗?以下是他们的解释。 http://developer.android.com/training/implementing-navigation/temporal.html#back-fragments