今回はプリファレンス(Preference)という機能を使って、
ローカルにアプリのデータを保存する方法を紹介してみます。
ローカル保存というと、ディレクトリを作成したりアクセス権限がどうとか難しそうな印象がありますが(私はあります)、
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(); } }
【実行結果】
ピンバック: 【Android】ローカルにファイルを保存、書き出し・読込み・削除をする方法 | 桜花満開