1

Android の画面の向きを処理するために、アクティビティの 1 つに onRetainNonConfigurationInstance() を実装しました。コードは次のとおりです。

  @Override
  public Object onRetainNonConfigurationInstance() {
    Log.d("[DEBUG]", "onRetainNonConfigurationInstance : "
        + this.getClass().getName());
    MyState state = new MyState();

    return state;
  }

次に、Android デバイスにアプリをインストールしました。構成は次のとおりです。

Device : Samsung Nexus S
Android version : 4.0.4
Kernel version : 3.0.8-g6656123android-build@vpbs1 #1

画面の向きを変更して電話でアプリをデバッグすると、onRetainNonConfigurationInstance()メソッドが呼び出されません。

奇妙なことに、Activity のonCreate()メソッドにログ行を追加しました。ドキュメントによると、Android は画面の向きが発生したときにアクティビティを再作成することになっています。だから私は次のようなものを持っています:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylist);
    Log.d(Constants.LOG_TAG, "Oncreate : " + this.getClass().getName());
}

ただし、ここでは、デバイスの画面の向きを変更してもonCreate()メソッドは呼び出されません。

あなたはすでにこの問題を経験していますか?

ドキュメントでは、このメソッドは非推奨であり、代わりに Fragments などに関連するものを使用する必要があるとも述べています。

実際、私は2.3.3 から 3.0のデバイスに実装していますが、私のテスト デバイスは 4.0.4です: 問題になる可能性はありますか? Android OS のバージョン間に何らかの下位互換性があると思っていました。

前もって感謝します、

4

1 に答える 1

1

アクティビティのマニフェスト ファイルで for がandroid:configChanges宣言されている可能性があります。これ、向きの変更を自分で処理することを示しているため、メソッドは呼び出されません。orientationonCreate

于 2012-04-11T12:03:29.183 に答える