2

我正在开发一个安卓应用程序。我在选项卡导航模式下有一个操作栏,三个选项卡调用要在框架视图容器中替换的片段。

我的问题是:如果用户在一个选项卡中生成一个后台堆栈,然后切换到另一个选项卡,如果在此状态下按下后退按钮-然后弹出后台堆栈,但选项卡不会更改,这会导致片段重叠(属于 Tab1 的 backstack 片段被弹出/添加,但 Tab2 仍然被选中,它的片段也是如此)。

有没有办法让操作栏选项卡对后退按钮做出反应,使其与片段后退堆栈平行?

4

3 回答 3

2

addBackStack("MainTab");我通过使用我在 中选择的名称 ( )将选项卡添加到 backstack 来解决它TabListener,然后覆盖 Activity 中的onBackPressed()方法以在弹出 backstack 时识别选项卡何时更改(通过获取 topBackStackEntry的名称) 并actionBar.setSelectedNavigationItem(position)相应地使用。

于 2012-10-02T14:57:21.527 回答
1

而不是使用addToBackStack(),覆盖onBackPressed()您的活动中的方法以自定义您希望后退键的行为方式。

于 2012-10-01T17:24:56.880 回答
0

这对我有用:)

@Override
public void onBackPressed() {
    if (viewPager.getCurrentItem() == 0) {
        super.onBackPressed();
    }else {
        viewPager.setCurrentItem(0);
    }
}
于 2019-08-17T06:55:51.120 回答