Androidのアプリケーションで、データを保存する方法を説明します。
保存する方法としては以下のものがあります。
- ファイルとして保存
- Preference
- データベース(SQLite)
今回はPreferenceを取り上げてみようと思います。
SharedPreferences
SharedPreferencesとは、Androidで簡単にデータを保存/読込を行う仕組みです。
具体的にはキーと値をセットで保持し、XML形式としてshared_prefフォルダに保存されます。
保存できる値
- int
- float
- long
- boolean
- String
保存、読み込みのためのメソッド
- putInt(String key, int value)
- putFloat(String key, float value)
- putLong(String key, long value)
- putBoolean(String key, boolean value)
- putString(String key, String value)
- getInt(String key, int defValue)
- getFloat(String key, float defValue)
- getLong(String key, long defValue)
- getBoolean(String key, boolean defValue)
- getString(String key, String defValue)
読み込みはSharedPreferencesのeditメソッドを使って、SharedPreferences.Editorクラスを取得してから行います。
保存はput〜〜メソッドを呼び出した後にcommitメソッドを呼び出す必要があります。
実際に使ってみる
PreferenceManagerのgetDefaultSharedPreferencesメソッドを使ってSharedPreferencesを取得します。
サンプルは下記の動きをします。
- Saveボタンを押すとEditTextに入力されている文字列をキーをSaveStringとして保存
- Loadボタンを押すとSaveStringというキーに対する値を取得してEditTextに設定
public class SampleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button saveButton = (Button)findViewById(R.id.SaveButton);
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
saveButtonClick();
}
});
Button loadButton = (Button)findViewById(R.id.LoadButton);
loadButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
loadButtonClick();
}
});
}
private void saveButtonClick() {
// 保存
EditText editText = (EditText)findViewById(R.id.EditText01);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.edit().putString("SaveString", editText.getText().toString()).commit();
}
private void loadButtonClick() {
// 読み込み
EditText editText = (EditText)findViewById(R.id.EditText01);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
editText.setText(sp.getString("SaveString", null), BufferType.NORMAL);
}
}