【Android】【Java】Preference 機能を使って設定データを読み込み・保存する 
2014/06/25 Wed [edit]
ついでに、これまでの「テキストファイルの読み込み・書き込み」とは少し違うのだが、Android には設定データなど、「キーと値」のペアで構成された、小さなデータを読み書きできる Preference(プリファレンス)という機能がある。簡単なものなら、この Preference 機能を使った方が、テキストファイルの読み書きよりも簡単にできるので、汎用性は無いが、覚えておいても損はないだろう。同じようなものがいくつかあるので、用途によって使い分けるのが良い。
簡単な分類や違いは次の通り。
クラス名 | メソッド名 | 概要 | 保存ファイルパス |
---|---|---|---|
Activity | getPreferences() | Activity 固有の設定値を記録する。ファイル名はアクティビティ名固定。 | /data/data/[パッケージ名]/shared_prefs/[Activity名].xml |
Context | getSharedPreferences() | アプリ固有の設定値を記録する。ファイル名は引数で自由に決められる。 | /data/data/[パッケージ名]/shared_prefs/[引数の名前].xml |
PreferenceManager | getDefaultSharedPreferences() | アプリ固有の設定値を記録する。ファイル名は固定。 ※テンプレートの「SettingsActivity」(PreferenceActivity)等はこれ。 | /data/data/[パッケージ名]/shared_prefs/[パッケージ名]_preference.xml |
用途の使い分けは、ちょっとした保存なら、PreferenceManager クラスの getDefaultSharedPreferences() で、細かくファイルを分けて保存したいなら、Context クラスの getSharedPreferences() あたりを使うと良いかも知れない。
■Activity 固有の設定データを読み込む[Activity クラス getPreferences()]
//Activity 固有の設定データを読み込む(Activity クラス)
//ファイルは "/data/data/[パッケージ名]/shared_prefs/[Activity名].xml" になる
SharedPreferences pref = getPreferences(MODE_PRIVATE);
String str = pref.getString("str", "defValue"); //読み込み
int val = pref.getInt("val", -1); //読み込み
System.out.println("str = " + str);
System.out.println("val = " + val);
■Activity 固有の設定データを保存する[Activity クラス getPreferences()]
//Activity 固有の設定データを保存する(Activity クラス)
//ファイルは "/data/data/[パッケージ名]/shared_prefs/[Activity名].xml" になる
SharedPreferences pref = getPreferences(MODE_PRIVATE);
String str = "あいうえお"; //保存値
int val = 100; //保存値
SharedPreferences.Editor editor = pref.edit();
editor.putString("str", str);
editor.putInt("val", val);
editor.commit(); //ここで保存
■アプリ固有の設定データを読み込む[Context クラス getSharedPreferences()]
//アプリ固有の設定データを読み込む(Context クラス)
//ファイルは "/data/data/[パッケージ名]/shared_prefs/[引数の名前].xml" になる
SharedPreferences pref = getSharedPreferences("name", MODE_PRIVATE);
String str = pref.getString("str", "defValue"); //読み込み
int val = pref.getInt("val", -1); //読み込み
System.out.println("str = " + str);
System.out.println("val = " + val);
■アプリ固有の設定データを保存する[Context クラス getSharedPreferences()]
//アプリ固有の設定データを保存する(Context クラス)
//ファイルは "/data/data/[パッケージ名]/shared_prefs/[引数の名前].xml" になる
SharedPreferences pref = getSharedPreferences("name", MODE_PRIVATE);
String str = "あいうえお"; //保存値
int val = 100; //保存値
SharedPreferences.Editor editor = pref.edit();
editor.putString("str", str);
editor.putInt("val", val);
editor.commit(); //ここで保存
■アプリ固有の設定データを読み込む[PreferenceManager クラス getDefaultSharedPreferences()]
//アプリ固有の設定データを読み込む(PreferenceManager クラス)
//ファイルは "/data/data/[パッケージ名]/shared_prefs/[パッケージ名]_preference.xml" になる
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); //this は Activity 等の Context
String str = pref.getString("str", "defValue"); //読み込み
int val = pref.getInt("val", -1); //読み込み
System.out.println("str = " + str);
System.out.println("val = " + val);
■アプリ固有の設定データを保存する[PreferenceManager クラス getDefaultSharedPreferences()]
//アプリ固有の設定データを保存する(PreferenceManager クラス)
//ファイルは "/data/data/[パッケージ名]/shared_prefs/[パッケージ名]_preference.xml" になる
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); //this は Activity 等の Context
String str = "あいうえお"; //保存値
int val = 100; //保存値
SharedPreferences.Editor editor = pref.edit();
editor.putString("str", str);
editor.putInt("val", val);
editor.commit(); //ここで保存
使い方はすべて同じ。中身は xml 形式ではあるが、テキストファイルなので、DDMS を使って [pull] でローカルに落とし、覗くこともできる。
●保存された xml ファイル内容
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="str">あいうえお</string>
<int name="val" value="100" />
</map>
テキストファイルの読み込みや保存などのページは→こちら
(関連記事)
【Android】res/raw リソースフォルダからテキストファイルを読み込む
【Android】assets フォルダからテキストファイルを読み込む
【Android】内部ストレージからテキストファイルを読み込む
【Android】内部ストレージにテキストファイルを保存する
【Android】SDカードからテキストファイルを読み込む
【Android】SDカードにテキストファイルを保存する
【汎用】ストリームからテキストファイルを読み込む(ストリームから読み込み、テキストエンコードして返す)
【汎用】ローカルシステム(Windows 等)から、テキストファイルを読み込む
【Applet/汎用】URL経由でWebサーバ上のテキストファイルを読み込む
【Applet】jar 内リソースからテキストファイルを読み込む
【Android】【Applet】【Java】テキストファイルの読み込み・保存 まとめ
【AndroidStudio】AndroidStudio 2.x で DDMS を表示する
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/125-45beae0f
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |