0

私のアプリでは、 onCreate() メソッドを使用してさまざまな変数を初期化しています。ただし、デバイスを回転させて画面が自動回転するたびに、 onCreate() が再度呼び出され、変数が再初期化されます。それはどのように機能するはずですか?アプリの起動時に一度だけ実行したいコードはどこに置くべきですか?

4

2 に答える 2

1

上記の回答により、Activity が特定の向きにロックされますが、これは通常、Android アプリの適切な動作ではありません。

あなたがしなければならないことは、アクティビティの状態を保存することです。これにより、アクティビティが再作成されたときに、保存された値で UI を再設定できます。

protected void onSaveInstanceState (Bundle outState) {
   super.onSaveInstanceState(outState);
   // put your values in the Bundle
   outState.putString("TextView1Text", textView1.getText()); // for example;
}

次に、onCreate()メソッドで値を復元できます

protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        textView.setText(savedInstanceState.getString("TextView1Text"));
    }
}

これは、ユーザーがホーム ボタンまたはその他の手段でアプリを離れたときにも機能します。

于 2013-04-06T19:07:57.763 に答える