Подтвердить что ты не робот

TabWidget onClick после onSaveInstanceState (java.lang.IllegalStateException: не удается выполнить это действие после onSaveInstanceState)

Я создал виджет с вкладкой фрагмента после образца пакета совместимости с фрагментом, я меняю фрагмент на onTabChanged, но у меня есть некоторые отчеты о рынке, которые показывают IllegalStateException после onSaveInstanceState, это вызвано запросом фиксации для менеджера фрагментов после вызова onSaveInstanceState(), но как я могу получить performClick после вызова onSaveInstanceState?

трассировка стека:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:548)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:532)
at my.app.NewsTab.onTabChanged(NewsTab.java:144)
at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:378)
at android.widget.TabHost.setCurrentTab(TabHost.java:363)
at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:149)
at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:559)
at android.view.View.performClick(View.java:3122)
at android.view.View$PerformClick.run(View.java:12012)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4126)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)

похоже, что это было как-то обсуждено (путем поиска ошибки), но для меня это только побочный эффект, ошибка в поддержке? Я также прочитал о другом жизненном цикле приложения для honeycomb +, но выполнить щелчок после сохранения экземпляра для меня выглядит нереалистичным.

использовать commitAllowingStateLoss() или mTabHost.setOnClickListener(null) в onSaveInstanceState?

К сожалению, я не могу воспроизвести, я вижу только редкие отчеты на консоли разработчика

активность имеет android:configChanges="orientation|screenLayout"

Я тестировал жизненный цикл также с "всегда закончить"

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

4b9b3361

Ответ 1

Проблема заключается в том, что вы пытаетесь зафиксировать FragmentTransaction после вызова метода Activity onSaveInstanceState(). Это не допускается по причинам, описанным в этом сообщении в блоге.

Ответ 2

onSaveInstanceState() вызывается после того, как активность исчезла с переднего плана. Вы не можете ничего сделать после сохранения состояния. Если хотите, сообщите нам свой код, чтобы проверить его. Вы должны внести изменения перед вызовом метода onSaveInstanceState().