パンダのメモ帳

技術系のネタをゆるゆると

PreferenceActivity まとめ

Android の設定画面用 Activity, PreferenceActivity の使い方を簡単にまとめてみる。

1. 画面の作り方

res/xml/preference.xml (名前はなんでもよかったりする)を作成する。この XML の書き方については このへん がわかりやすい。別に PreferenceCategory はあってもなくてもいい。試しに作った preference.xml はこんなカンジ。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
  <ListPreference
    android:key="@string/pref_key_list"
    android:title="@string/pref_title_list"
    android:summary="@string/pref_summary_list"
    android:dialogTitle="@string/choose"
    android:entries="@array/pref_list_entries"
    android:entryValues="@array/pref_list_entry_values"/>
  <CheckBoxPreference
    android:key="@string/pref_key_checkbox"
    android:title="@string/pref_title_checkbox"
    android:summary="@string/pref_summary_checkbox" />
</PreferenceScreen>

2. Activity の作り方

PreferenceActivity を継承した Activity を作成する。こんなカンジ。

public class MyPreferenceActivity extends PreferenceActivity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preference);
	}
}

さっき作ったXMLリソースを読み込むだけ。これで画面の表示+設定の読み書きをしてくれる。楽ちん!

3. Activity の呼び出し方

特別なことはなにもしなくてOK。いつも通りの手順で呼び出せばOK。

Intent intent = new Intent(this, MyPreferenceActivity.class);
startActivity(intent);

4. 設定の読み込み方

メインの Activity から PreferenceActivity で設定した内容を読み込むには SharedPreferences なるモノを使うらしい。最初、ここを参考にやってみたら情報が古いせいかうまくいかず。しかたなく別のページを参考にやってみたら今度は成功!というわけで失敗例と成功例。

// 失敗例
SharedPreferences prefs = getPreferences(MODE_PRIVATE);

// 成功例
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

こうして取得した SharedPreferences インスタンスから1つずつ設定を取り出す。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String listValue        = prefs.getString(getString(R.string.pref_key_list), "");
boolean checkboxValue   = prefs.getBoolean(getString(R.string.pref_key_checkbox), false);

わかってみれば超簡単!