【问题标题】:Android- Make back button switch between tabs (tab navigation actionbar)?Android-在选项卡之间切换后退按钮(选项卡导航操作栏)?
【发布时间】:2012-10-01 17:22:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-fragments android-actionbar android-fragmentactivity


    【解决方案1】:

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

    【讨论】:

    • 我解决了。有兴趣的朋友:FragmentManager.BackStackEntry bE = getFragmentManager().getBackStackEntryAt(getFragmentManager().getBackStackEntryCount() - 1); String nameOfTopBackEntry = bE.getName(); // NAME, you provided with addToBackStack(NAME);
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这对我有用:)

      @Override
      public void onBackPressed() {
          if (viewPager.getCurrentItem() == 0) {
              super.onBackPressed();
          }else {
              viewPager.setCurrentItem(0);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        相关资源
        最近更新 更多