9

アクティビティの向きを処理する際に非常に奇妙な問題に直面しています。シナリオを説明しよう

アクティビティ A と B があります。現在、A は横向きモード、B(固定) は縦向きモードです。ユーザーが A の向きを変更した場合、アクティビティ A の状態を保存しています。A (横)からB (縦)に移動したため、その場合、A はバックグラウンドにあるため、onSaveInstance(bundle)メソッドを呼び出す必要があります。しかし、それが呼び出され、戻ってきたときにAの on Resume() が呼び出され、onResume() can not call after onSaveInstance() for Aという例外が発生しました。

これは何か、私をいらいらさせます。

更新 編集

両方の活動が任意の向きを持つことができる場合。次に、アクティビティ A onSaveInstance(bundle)は、B に移動するときに呼び出されず、うまく機能します

4

1 に答える 1

5

私はまだ論理的な説明を待っていますが。しかし、私は私の問題を解決しました。アクティビティ A から B に移動するときは、すべてのケースでonsaveInstance()を呼び出します。したがって、戻ってくるとアクティビティが再開されますが、 onsaveInstance() は再度呼び出されません。だから私は得ていた

onResume() can not be called after onSaveInstance(Bundle)

理由 -アクティビティの状態は既に保存されているため、onResume() を呼び出せないと思います。そして主な問題は、 onSaveInstance(Bundle) がアクティビティのライフサイクルの一部ではないため、非常に苦痛な状況です。

解決策 - onSaveInstance(Bundle)からsuper.onSavaInstance(Bundle )を削除します。そして問題は解決しました。向きの変更のためにまだ機能しています

于 2012-12-15T04:27:03.213 に答える