Android Studioでアプリ開発!

Androidアプリ開発初心者の備忘録です。

アプリのデータを Preferences を用いて読み書きする

アプリのデータを保存したり読み込んだりしたい

Androidアプリを作成していると、アプリの設定や情報を保存しておきたい場合があります。これにはいろいろな方法があるのですが、最も手軽に利用できる Preferences を用いたデータの読み書きの方法を紹介したいと思います。

実行イメージ

名前と年齢と性別を入力する画面です。「保存する」ボタンをクリックしたら、入力された名前と年齢と性別を保存します。次回起動時には、保存した情報を読み出し、名前と年齢と性別を表示します。
f:id:jolene:20140724135513p:plain

名前と年齢と性別を保存する

/**
 * Preferences にパーソナルデータを保存する
 * @param context
 * @param name 名前
 * @param age 年齢
 * @param male 性別(true:男/false:女)
 */
private void savePerson(Context context, String name, int age, boolean male){
    // アプリ標準の Preferences を取得する
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);

    // Preferences に書き込むための Editor クラスを取得する
    SharedPreferences.Editor editor = sp.edit();

    // putXxxx("キー",データ) にて書き込むデータを登録する
    editor.putString("name", name);
    editor.putInt("age", age);
    editor.putBoolean("male", male);

    // 書き込みを確定する
    editor.commit();
}

android.preference.PreferenceManager クラスの getDefaultSharedPreferences() メソッドで android.content.SharedPreferences を取得します。これはアプリの情報を読み書きできるクラスで、保存するファイルを指定する必要がない場合に使用します。
Editor クラスからデータの型に応じて putString()、putInt()、putBoolean() メソッドを呼び、書き込む情報を登録しています。ここで重要なのは、書き込む際にキーを指定していることです。このキーを元に読み出しも行うので間違いがないようにします。
commit() メソッドで実際に書き込みを行います。

名前と年齢を読み出す(性別に関しては割愛)

/**
 * Preferences から名前を読み出す
 * @param context
 * @return 名前(なければ空文字を返す)
 */
private String loadName(Context context){
    // アプリ標準の Preferences を取得する
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    return sp.getString("name", "");
}

/**
 * Preferences から年齢を読み出す
 * @param context
 * @return 年齢(なければ 0 を返す)
 */
private int loadAge(Context context){
    // アプリ標準の Preferences を取得する
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    return sp.getInt("age", 0);
}

読み出す方は簡単で、Preferences を取得したら読み出したいデータの型に応じたメソッドをキーとともに呼び出すだけです。第2引数には、そのキーに該当するデータが見つからない場合に返すデータを指定します。

まとめ

SharedPreferences を用いてアプリのデータを読み書きする方法を紹介しました。難しい操作は必要ないので、手軽に実装できると思います。

Android StudioではじめるAndroidプログラミング入門

Android StudioではじめるAndroidプログラミング入門

初歩からわかるAndroid最新プログラミング 増補改訂版

初歩からわかるAndroid最新プログラミング 増補改訂版