15

フラグメント互換性パッケージのサンプルに従ってフラグメント タブ ウィジェットを作成しましonTabChangedた。呼ばれた?IllegalStateExceptiononSaveInstanceStateonSaveInstanceState()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)

これはどういうわけか(エラーを検索して)議論されたようですが、私にとっては副作用であり、サポートのバグですか?ハニカム+の別のアプリケーションライフサイクルについても読みましたが、インスタンスを保存した後にクリックを実行すると、私には実現不可能な動作に見えます

commitAllowingStateLoss()または mTabHost.setOnClickListener(null)で使用する必要がありonSaveInstanceStateますか?

残念ながら再現できません。開発者コンソールにはまれなレポートしか表示されません

活動にはandroid:configChanges="orientation|screenLayout"

「常に終了」でもライフサイクルをテストしました

タブフラグメントスイッチャーはViewPager内にありますが、関連しているとは思えません

4

3 に答える 3

-1

問題は、のメソッドが呼び出されたFragmentTransaction後にをコミットしようとしていることです。これは、このブログ投稿に記載されている理由により許可されていません。ActivityonSaveInstanceState()

于 2013-08-20T23:06:15.373 に答える
-1

onSaveInstanceState()Activity がフォアグラウンドから消えた後に呼び出されます。状態を保存した後は何もできません。可能であれば、コードを共有して確認してください。メソッドを呼び出す前に変更を行う必要がありますonSaveInstanceState()

于 2015-09-16T13:34:26.447 に答える