Preference(2)-Preference部品のいろいろ


前回は、Preference部品として「EditTextPreference」のみを使った設定画面の例を示したが、 Preference部品は他にも幾つか存在する。

Preferenceクラスを継承したクラス

Preference部品を示すPreferenceクラスを継承したクラスについ、みていくことにする。

 

PreferenceActivity画面に配置できる設定画面の構成部品は、Preferenceクラスを継承したクラスである。

Preference部品のクラスの継承関係を図示すると以下のようになる。

 

別画面に表示

 

図中の背景色が赤色で表示されている、PreferenceGroupクラスとDialogPreferenceは抽象クラスであり、そのクラス自身を配置する事はできない。

Preferenceクラス

PreferenceクラスはPreferenceクラスのベースとなるクラスであり、 Preference部品に共通で使われる機能が実装されていて、このクラスを拡張する事で独自のPreference部品をつくる事ができる。

PreferenceオブジェクトをPreference部品として配置する事は可能だが、 そのままでは設定値を操作する事ができないため、通常はこのクラスを直接使う事はない。

しかし、「Preferenceクラスの活用」で述べるように、レイアウト属性を設定したりIntentを指定する等、面白い使い方をすることができる。

PreferenceGroupクラス

PreferenceGroupクラスのサブクラスは、Preferenceのコンテナクラスとして内部にPreference部品を入れ子に配置する事ができる。

PreferenceScreenクラス

PreferenceScreenクラスは、1画面分のPreference部品を入れ子にして表示するためのクラスである。 PreferenceScreenの内部にPreferenceScreenを入れ子にする事ができ、これにより、複数の設定画面を表示する事ができる。

PreferenceCategoryクラス

PreferenceCategoryクラスは、設定データをグループ分けして、内部にPreference部品を入れ子にして表示するためのクラスである。

DialogPreferenceクラス

DialogPreferenceクラスを継承する事で、ダイアログボックスを表示して、 設定データを指定する独自のPreference部品をつくる事ができる。

CheckBoxPreferenceクラス

CheckBoxの選択状態に応じて、boolean型の値が設定データとして保存される。

後で述べる依存関係を設定する時の依存先のPreferenceとして指定される事が多い。

RingtonePreferenceクラス

RingtonePreferenceもダイアログボックスを表示するが、なぜかしら、DialogPreferenceクラスのサブクラスではない。

EditTextPreferenceクラス

Dialogに文字列を入力するためのTextViewを表示する。

ListPreferenceクラス

Dialogに複数の候補から、1つの項目を選択するためのラジオボタンを表示する。

DialogPreferenceクラスを継承しているのでandroid:dialogMessageを指定できるはずであるが、 実際には、これを指定するとAlertDialogのようにリストが表示できなくなってしまうので注意。

いろいろなPreference部品を使うサンプル

前回のリスト1のプログラムを修正して、androidにあらかじめ用意されているいろいろなPreference部品を、 PreferenceActivityに配置したプログラムの例を示す。

 

リスト項目より候補を選択できるPreference部品であるListPreferenceを使用するには、 文字列配列リソースをリソースファイルに記述する必要がある。

res/valuesフォルダ-にリソースファイル「arrays.xml」を追加して、以下の文字列配列リソースを新規に追加する。

リスト3(1)-文字列配列のリソースリソースファイル(arrays.xml)

リスト1(1)のPreference部品のレイアウトファイルを、以下のように修正する。

リスト3(1)-Preference部品のレイアウトファイルの修正(my_preference.xml)

リスト1(3)のメインアクティビティのreadPreferencesメソッドを修正して、 設定データとして保存されているすべての設定データのキーとそれに対応する値を、表示するように変更する。

リスト3(3)-メインアクティビティのreadPreferencesメソッドを修正(PreferenceSample1Activity.java)

SharedPreferencesクラスのgetAllメソッドにより、 保存されているすべての設定データのキーと値をMapコレクションオブジェクトとして取得できる。

そしてこれを使って、個々のPreferenceデータをEntry<String, ?>オブジェクトとして取り出して、 TextViewに表示している。

Preference画面は以下のようになる。

 

 

ページのトップへ戻る