我正在开发一个安卓应用程序。我在选项卡导航模式下有一个操作栏,三个选项卡调用要在框架视图容器中替换的片段。
我的问题是:如果用户在一个选项卡中生成一个后台堆栈,然后切换到另一个选项卡,如果在此状态下按下后退按钮-然后弹出后台堆栈,但选项卡不会更改,这会导致片段重叠(属于 Tab1 的 backstack 片段被弹出/添加,但 Tab2 仍然被选中,它的片段也是如此)。
有没有办法让操作栏选项卡对后退按钮做出反应,使其与片段后退堆栈平行?
我正在开发一个安卓应用程序。我在选项卡导航模式下有一个操作栏,三个选项卡调用要在框架视图容器中替换的片段。
我的问题是:如果用户在一个选项卡中生成一个后台堆栈,然后切换到另一个选项卡,如果在此状态下按下后退按钮-然后弹出后台堆栈,但选项卡不会更改,这会导致片段重叠(属于 Tab1 的 backstack 片段被弹出/添加,但 Tab2 仍然被选中,它的片段也是如此)。
有没有办法让操作栏选项卡对后退按钮做出反应,使其与片段后退堆栈平行?
addBackStack("MainTab");
我通过使用我在 中选择的名称 ( )将选项卡添加到 backstack 来解决它TabListener
,然后覆盖 Activity 中的onBackPressed()
方法以在弹出 backstack 时识别选项卡何时更改(通过获取 topBackStackEntry
的名称) 并actionBar.setSelectedNavigationItem(position)
相应地使用。
而不是使用addToBackStack()
,覆盖onBackPressed()
您的活动中的方法以自定义您希望后退键的行为方式。
这对我有用:)
@Override
public void onBackPressed() {
if (viewPager.getCurrentItem() == 0) {
super.onBackPressed();
}else {
viewPager.setCurrentItem(0);
}
}