3

オリエンテーションイベントが発生したすべての状態をどのように処理できますか?

何かのようなもの:

  • 開始する前に(いくつかの画面状態を保存してください)
  • 起こったとき(アニメーションの目的)
  • それが起こった後(画面の状態をロードする)

onConfigurationChangedが方向の変更を処理できることを知っています。そして私はこれを試しました:

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

        super.onConfigurationChanged(cfg);

        loadState();
    }

saveStateに、ギャラリーで表示されたlastIndexをSharedPreferencesに保存します。loadStateで、SharedPreferencesからlastIndexを取得し、それをギャラリーの現在のインデックスにします。

また、loadStateをonResumeメソッドに入れてみましたが、向きの変更が発生した後は呼び出されません。

4

2 に答える 2

4

開始する前に(いくつかの画面状態を保存してください)

使用onSaveInstanceState()および/またはonRetainNonConfigurationInstance()および/またはあなたが呼び出したフラグメントsetRetainInstance(true)

起こったとき(アニメーションの目的)

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

それが起こった後(画面の状態をロードする)

使用onRestoreInstanceState()および/またはgetLastNonConfigurationInstance()(フラグメントルートを使用した場合、データは自然にそこにあります)

onConfigurationChangedが方向の変更を処理できることを知っています。

@EightEightの答えはこれをうまくカバーしています。

于 2011-10-21T00:31:09.347 に答える