ориентация экрана обработки фрагментов с помощью вкладок на панели действий - PullRequest
7 голосов
/ 22 марта 2012

Может кто-нибудь объяснить мне или, может быть, указать ссылку или пример того, как следует обращаться с ориентацией экрана, когда дело доходит до фрагментов.Проблема, с которой я столкнулся на данный момент, заключается в том, что у меня есть приложение с панелью действий с тремя вкладками.Каждая вкладка содержит один фрагмент.Поэтому, когда я переворачиваю устройство, отображается только один фрагмент, который я установил как выбранный, используя

actionbar.setSelectedNavigationItem(1) 

(без путаницы другие вкладки видны, но когда я нажимаю на них, ничего не происходит, они могутне будет выбран и показан. Их содержание никогда не отображается).Есть ли что-то, что делается в этих случаях?Может кто-нибудь дать мне совет, я был бы признателен.Спасибо.

1 Ответ

13 голосов
/ 05 апреля 2012

У меня была такая же проблема, и я нашел решение здесь: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html

Проблема в том, что для вкладок уже есть фрагменты из ранее сохраненного состояния. Вы должны деактивировать их.

Вот фрагмент кода для конструктора вашего TabListener:

public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
        mArgs = args;

        // Check to see if we already have a fragment for this tab, probably
        // from a previously saved state.  If so, deactivate it, because our
        // initial state is that a tab isn't shown.
        mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
        if (mFragment != null && !mFragment.isDetached()) {
            FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
            ft.detach(mFragment);
            ft.commit();
        }
    }

Надеюсь, я смогу вам помочь.

...