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); } }