それが 「PreferenceActivity」
ListActivity を拡張したクラスなので、各設定項目が
リスト状に配置されます。
画面の設定方法は
・ソースコードで定義する方法
・XMLで定義する方法
の2つがあります。
XMLで定義する方法
1. res の下に xml という名前のフォルダを作成
2. res/xml に pref.xml を作成
3. pref.xml に画面の配置を定義
pref.xml の例
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Libraroid Setting">
<CheckBoxPreference
android:key="checkbox_value"
android:title="Setting1"
android:summary="sample of checkbox setting" />
<EditTextPreference
android:key="edittext_value"
android:title="Setting2"
android:summary="sample of edittext setting"
android:dialogTitle="Setting edittext"
android:dialogMessage="please set values" />
<ListPreference
android:key="list_value"
android:title="Setting3"
android:summary="sample of list setting"
android:entries="@array/search_condition"
android:entryValues="@array/search_condition_value" />
<RingtonePreference
android:key="ringtone_value"
android:title="Setting4"
android:summary="sample of ringtone setting"
android:showDefault="true"
android:showSilent="true"
android:ringtoneType="ringtone" />
</PreferenceCategory>
</PreferenceScreen>
こんな階層にする
<PreferenceScreen>
<PreferenceCategory>
各設定タイプのタグ
</PreferenceCategory>
</PreferenceScreen>
各設定タイプのタグには
* CheckBoxPreference
* DialogPreference
* EditTextPreference
* ListPreference
* RingtonePreference
があります。
これらに共通のパラメータにはこんなのがあります。
android:defaultValue
初期値
android:dependency
この Preference が依存する他の Preference の key
android:enabled
この Preference が有効かどうか
android:key
システムに保存するときの key
android:layout
PeferenceActivity 画面内でのこの Preference の layout
android:order
Prefernce の順番、小さい方が最初
android:persistent
shared preferences に保存するかどうか
android:selectable
選択できるかどうか
android:shouldDisableView
この Preference が無効のとき、表示を無効にするかどうか
android:summary
タイトルの下の文字列、説明を書いたり、選択値を表示する
android:title
タイトル
アクティビティの例
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class PreferenceActivityExample extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref);
}
}
PreferenceActivity クラスを継承して、setContentView の代わりに
addPreferencesFromResource で pref.xml を読み込む
ここで設定されたデータは自動的にシステム内部に保存され、
PreferenceManager::getDefaultSharedPereference を使って
ソースコードからアクセスすることができますー。