Activityの状態を保存する方法
2289 ワード
imhet stackoverflowから訳す
問題の説明
Androidを使用して開発する過程で、次のコードのようなアプリケーションの状態をどのように保存するかに迷っています.
この例は簡単だと思いますが、私がどのようにこのアプリケーションを終了しても、それが私に与えた最初の情報です.
高票の答え
Bundleはキー値ペアを格納する重要な方法であり、
通常、このテクノロジーを使用して、アプリケーション内のインスタンス値(選択された情報、保存されていないテキストなど)を格納します.詳細については、公式ドキュメントを参照してください.
問題の説明
Androidを使用して開発する過程で、次のコードのようなアプリケーションの状態をどのように保存するかに迷っています.
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
if (savedInstanceState == null) {
mTextView.setText("Welcome to HelloAndroid!");
} else {
mTextView.setText("Welcome back.");
}
setContentView(mTextView);
}
private TextView mTextView = null;
}
この例は簡単だと思いますが、私がどのようにこのアプリケーションを終了しても、それが私に与えた最初の情報です.
onPause
のような方法を書き直す必要があるに違いありませんが、公式ドキュメントでは長い間明らかな答えが見つかりませんでした.あなたたちの助けを期待して、感謝しています.高票の答え
onSaveInstanceState(Bundle savedInstanceState)
を書き換える必要があります.アプリケーションに関連するステータス値をBundle
に書き込む必要があります.@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// UI savedInstanceState
// bundle onCreate
savedInstanceState.putBoolean("MyBoolean", true);
savedInstanceState.putDouble("myDouble", 1.9);
savedInstanceState.putInt("MyInt", 1);
savedInstanceState.putString("MyString", "Welcome back to Android");
//
}
Bundleはキー値ペアを格納する重要な方法であり、
onCreate()
とonRestoreInstanceState()
に渡されます.この2つの方法では、前に格納された値を次のコードのように取り出すことができます.
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// savedInstanceState UI
// bundle onCreate
boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
double myDouble = savedInstanceState.getDouble("myDouble");
int myInt = savedInstanceState.getInt("MyInt");
String myString = savedInstanceState.getString("MyString");
}
通常、このテクノロジーを使用して、アプリケーション内のインスタンス値(選択された情報、保存されていないテキストなど)を格納します.詳細については、公式ドキュメントを参照してください.