Androidプログラマへの道 〜 Moonlight 明日香 〜 - プリファレンスに書き込む
プリファレンスを利用してデータを保存するには, SharedPreferencesクラスを利用する.

データ保存

  • MainActivity.java
    • getSharedPreferencesメソッドで, ファイル名およびアクセスモードを指定して, SharedPreferencesオブジェクトを取得する.
アクセスモード説明
MODE_PRIVATE他のアプリケーションからのアクセス不可
MODE_WORLD_READABLE他のアプリケーションからの読み出し可
MODE_WORLD_WRITABLE他のアプリケーションからの書き込み可
    • SharedPreferences#editメソッドで, SharedPreferences.Editorインタフェースを取得する.
    • Editor#putXXXメソッドで, キーと値を指定してデータを書き込む.
メソッド保存できる値
putBooleanboolean
putFloatfloat
putIntint
putLonglong
putStringString
    • Editor#commitメソッドで, コミットする.
package com.moonlight_aska.android.work.preference01;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class MainActivity extends Activity implements View.OnClickListener {
  private static final String FILENAME = "sample";
  private Button btnWrite = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnWrite = (Button)findViewById(R.id.btn_write);
    btnWrite.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    // データ書き込み
    SharedPreferences pref = getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
    if (pref != null) {
      SharedPreferences.Editor editor = pref.edit();
      // ブール値
      CheckBox cb = (CheckBox) findViewById(R.id.w_bool_id);
      editor.putBoolean("DATA1", cb.isChecked());
      // 数字
      EditText dat2 = (EditText) findViewById(R.id.w_int_id);
      String str = dat2.getText().toString();
      if (!str.equals("")) {
        editor.putInt("DATA2", Integer.parseInt(str));
      }
      // 文字列
      EditText dat3 = (EditText) findViewById(R.id.w_string_id);
      str = dat3.getText().toString();
      if (!str.equals("")) {
        editor.putString("DATA3", str);
      }
      editor.commit();
    }
  }
}