2012-01-31 96 views
5

我设法创建了一个ActionBar选项卡菜单,调用扩展片段的不同类。 问题是,当我改变方向时,在菜单项之间切换什么都不做。 但我终于明白了这个问题。Android ICS + ActionBar选项卡+方向更改

主要的问题是这里的老片段不被删除的方向变化时,所以总有一个未使用的标签的只是用户所选择的选项卡

任何想法以上的副本?我缺少一些基本的东西?

谢谢

回答

15

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

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

更换ft.addft.replace设法删除所有旧片段,在新的地方正确显示。

希望这有助于别人

1

我认为这是更好地保存的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); 
     } 
-1

有标签听者的旧片段(得自onTabUnselected左()不会被调用),并将其分离的构造检查。有一个专门为ActionBarSherlock制作的选项卡侦听器:FragmentTabListener.java。来自API演示的FragmentTabs.java中也有相同的构造函数代码(没有支持库的情况下使用)。

相关问题