【Android】プリファレンス(Preference)を使ってローカルにデータを保存してみる


今回はプリファレンス(Preference)という機能を使って、
ローカルにアプリのデータを保存する方法を紹介してみます。

ローカル保存というと、ディレクトリを作成したりアクセス権限がどうとか難しそうな印象がありますが(私はあります)、
Androidではとっても簡単にできます。

賢いな、さすがAndroidかしこい。


Android入門

【参考サイト】
設定値を簡単に保存するプリファレンスの使い方 - Android 開発入門
・mucchinのAndroid戦記 「Androidアプリのデータ保存方法の一つ「プリファレンス」の使い方

MODEとデータ型を指定して、データの保存

まずは保存からです。

プリファレンスは配列のkeyとvalueのように、keyに対応する値を保存できるみたいです。
アプリの設定値などを保存するのに向いていますね。

保存した値は、他のアプリから使えるみたいですが、今回はアプリ内でのみ使える値を保存してみます。

・インポート
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;


・インスタンスを取得して、データを保存
SharedPreferences test_pre=  getSharedPreferences("test_pre" , MODE_PRIVATE );
Editor e = test_pre.edit();
e.putInt("key", 1771 );
e.commit();



getSharedPreferences関数の第一引数がプリファレンスの名前、第二引数が使用出来るモードのようです。

■使用出来るモード
MODE_WORLD_READABLE他のアプリから読み取り可
MODE_WORLD_WRITEABLE他のアプリから書込み可能
MODE_PRIVATEそのアプリ内でのみ使用可能

Int型を保存する場合はputInt、
String型ならputString、
Float型ならputFloatを使いましょう。


今回のサンプルではMODE_PRIVATEでputIntを使いました。


保存したデータの取得


取得の時も同じようにgetSharedPreferences関数を使ってインスタンスを取得。
Editorは使わずそのまま取得できます。
putIntで保存したデータならgetInt、
putStringで保存したデータならgetStringですね、わかりやすい(^ω^)

先ほど保存したデータを取得してみます。
SharedPreferences test_pre= getSharedPreferences("test_pre" , MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
int pre_int = test_pre.getInt("key", 0 );



getInt関数の第二引数は取得できなかった場合のデフォルト値です。
int型なので0を指定しています。


サンプルプログラムを作ってみました。
アプリを開いた回数をプリファレンスで保存して表示するだけです。

サンプルプログラム

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Sample20120628Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        setContentView(ll);
        TextView tv = new TextView(this);

        //プリファレンスのインスタンスを取得
		SharedPreferences count_pre = getSharedPreferences("count_pre" , MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
		int count = count_pre.getInt("count", 1 );

		tv.setText( count + "回目の起動です!" );
		ll.addView(tv);

		//カウントを増やす
		count++;

		//増やした数を再び保存
		Editor e = count_pre.edit();
		e.putInt("count", count );
		e.commit();

    }
}



【実行結果】
プリファレンス(Preference)使用サンプル01

1回目の起動



プリファレンス(Preference)使用サンプル02

3回目の起動


関連記事

【Android】プリファレンス(Preference)を使ってローカルにデータを保存してみる” への1件のコメント

  1. ピンバック: 【Android】ローカルにファイルを保存、書き出し・読込み・削除をする方法 | 桜花満開