ActionBar Вкладки с фрагментами при повороте - PullRequest
9 голосов
/ 08 февраля 2012

Я создаю приложение с ActionBar и двумя вкладками ниже. Все работает нормально, если устройство / эмулятор не вращается. При повороте состояния табуляции автоматическое переключение переключается на tab1 (нормально, потому что вызывается onCreate), но содержимое не изменяется. Если я выбираю вкладку в новой ориентации, вызывается метод onCreateView() из выбранного Fragment, но представление не обновляется (всегда остается прежним). Любые советы?

Код.

Основная деятельность:

    ActionBar actionbar = getActionBar();
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.Tab ATab = actionbar.newTab().setText(R.string.player);
    ActionBar.Tab BTab = actionbar.newTab().setText(R.string.stations);

    Fragment AFragment = new AFragment();
    Fragment BFragment = new BFragment();

    PlayerTab.setTabListener(new MyTabsListener(AFragment));
    StationsTab.setTabListener(new MyTabsListener(BFragment));

    actionbar.addTab(ATab);
    actionbar.addTab(BTab);

С одинаковыми вкладками, которые отображают простое текстовое представление. Текстовое представление просто сказать, какая вкладка выбрана.

Фрагменты:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.a, container, false);
}

Макет Fragment, упомянутый выше, содержит только TextView с жестко закодированным текстом. (Только для целей тестирования)


Основной макет выглядит следующим образом.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >


    <LinearLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
 </LinearLayout>

</LinearLayout>

1 Ответ

19 голосов
/ 09 февраля 2012

решаемая.Я каждый раз воссоздаю фрагмент, больше не делаю, чтобы решить его.

Изменено в моем TabListener и onTabSelected(Tab tab, FragmentTransaction ft), ft.add() на ft.replace()

...