【问题标题】:Android ICS + ActionBar Tabs + Orientation changeAndroid ICS + ActionBar 选项卡 + 方向更改
【发布时间】:2012-01-31 17:05:57
【问题描述】:

我设法制作了一个 ActionBar Tab 菜单,调用了扩展 Fragments 的不同类。 问题是,当我改变方向时,在菜单项之间切换什么都不做。 但我终于弄清楚了问题所在。

这里的主要问题是当方向改变时旧片段不会被删除,所以在用户选择的标签上方总是有一个未使用标签的副本

有什么想法吗?我缺少一些基本的东西?

谢谢

【问题讨论】:

    标签: android tabs orientation android-actionbar


    【解决方案1】:

    我终于自己找到了解决方案,在我的自定义ActionBar.TabListener 类中定义的onTabSelected 方法中,我有ft.add 将片段添加到我的视图中。

    当方向改变时,onTabUnselected 方法没有被调用,所以 Fragment 仍然存在。

    ft.add 替换为ft.replace 设法擦除所有旧片段,以便正确显示新片段。

    希望这对其他人有帮助

    【讨论】:

      【解决方案2】:

      我认为最好将 selectedIndex 保存在活动娱乐中。 这样您就不会遇到问题,因为不需要选择和取消选择相同的索引,而且对用户来说也更好。

          protected void onSaveInstanceState(Bundle outState) {   
            super.onSaveInstanceState(outState);
            int i = getActionBar().getSelectedNavigationIndex();
            outState.putInt("selectedTabIndex", i);       
      }
      
          //And then restore
          private void initActionBar(Bundle savedInstanceState) {
              ActionBar ab = getActionBar();
              ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
              ab.addTab(...);
                  ...
      
              if(savedInstanceState != null) {
                  int index = savedInstanceState.getInt("selectedTabIndex");
                  getActionBar().setSelectedNavigationItem(index);
              }   
      

      【讨论】:

        【解决方案3】:

        让选项卡侦听器的构造函数检查旧片段(未调用 onTabUnselected() 左侧)并将其分离。这里有一个专门为 ActionBarSherlock 制作的选项卡监听器:FragmentTabListener.java。 API 演示的 FragmentTabs.java 中也有相同的构造函数代码(用于不使用支持库)。

        【讨论】:

          猜你喜欢
          • 2013-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多