データを簡単に保存する方法(Preference編)


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

8 Comments