3

方向イベントのすべての状態はどのように処理できますか?以下のような方向変更のハンドル状態

何か:

  • 起こっ(アニメーション目的)それが起こるだ後
  • (いくつかの画面状態保存)開始前に

私が知っている(画面状態をロード)そのonConfigurationChangedは向きの変更を処理できます。私はlastIndexのはSharedPreferencesのギャラリーで見保存ステートセーブオン

public void onConfigurationChanged(Configuration cfg) { 
     saveState(); 

     super.onConfigurationChanged(cfg); 

     loadState(); 
    } 

:そして、私はこれを試してみました。 loadStateで私はSharedPreferencesからlastIndexを取得し、ギャラリーの最新のものにします。

また、loadStateをonResumeメソッドに配置しようとしましたが、向きが変更された後に呼び出されません。

答えて

4

使用onSaveInstanceState()および/またはonRetainNonConfigurationInstance()および/または(アニメーション目的)が起こったときにsetRetainInstance(true)

と呼ばれているにフラグメント

これはOSによって処理されます。

それが起こるだ後

使用onRestoreInstanceState()および/またはgetLastNonConfigurationInstance()は(あなたがフラグメントのルートを行けば、あなたのデータはちょうど自然にまだある)

Iを(画面状態をロード) onConfigurationChangedが方向変更を処理できることを知っています。

@EightEight's answerはこれをうまくカバーします。

3

少し混乱するかもしれません。

これはapi docsからである:(構成newconfigに保存)onConfigurationChanged

ます。public voidあなたの活動の実行中にすると、デバイス設定の変更システムによって呼び出され。これは、マニフェストのconfigChanges属性で処理したい設定を選択した場合にのみ呼び出されることに注意してください。あなたはAndroidManifestでパラメータを指定した場合は

、システムはonConfigurationChangedを呼び出すことにより、姿勢の変化を通知します()。このフラグを設定しなかった場合は、Androidがあなたの活動を停止させ、正しい向きで新しいものを開始してからonResume()に電話します。

アクティビティの終了時にオリエンテーションが変更され、すべてレイアウトされたときに通知を受けたい場合は、いずれかの子ビューでonDraw()メソッドをオーバーライドすることをお勧めします。それまでにすべてが完了し、たとえば、方向変更の前から状態を復元することができます。

HTH。 (いくつかの画面状態を保存)開始する前に

関連する問題