Android ICS + ActionBar Tabs + изменение ориентации

Мне удалось создать меню ActionBar Tab, называя разные классы, которые расширяют фрагменты. Проблема в том, что когда я меняю ориентацию, переключение между пунктами меню ничего не делает. Но я, наконец, понял проблему.

Основная проблема здесь – старый фрагмент, который не удаляется при изменении ориентации, поэтому всегда есть копия неиспользуемой вкладки чуть выше выбранной пользователем вкладки

Есть идеи? Мне не хватает чего-то основного?

спасибо

Я, наконец, нашел решение самостоятельно, в методе onTabSelected определенном в моем настраиваемом классе ActionBar.TabListener меня был ft.add который добавил фрагмент к моему представлению.

Когда ориентация изменена, метод onTabUnselected не был вызван, поэтому фрагмент остался там.

Замена ft.add на ft.replace удалось удалить все старые фрагменты, чтобы новые отображались правильно.

Надеюсь, это поможет кому-то еще

Я думаю, что лучше сохранить 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); } 

Попросите конструктор-хранитель вкладки проверить старый фрагмент (слева от onTabUnselected () не вызывается) и отсоедините его. Здесь есть вкладка-слушатель, специально созданная для ActionBarSherlock: FragmentTabListener.java . Тот же код конструктора (для использования без библиотек поддержки) также находится в FragmentTabs.java из демонстраций API.