Androidアプリの設定画面を実装する一番オーソドックスな方法としてPreferenceAPIがあります。
ここではその実装方法についてまとめます。
1.画面の作り方
Android3.0(API Level 10)以下、もしくはタブレット用などに設定をグループ化して2段階表示させたい場合にはPreferenceActivityを利用します。
それ以外の場合はPreferenceFragmentを利用します。
今から作るアプリで有れば3.0以降を対象にしてもそこまで利用者が少なくなるわけではないですし、設定画面の基本的な作り方を紹介したいと思いますので、ここではPreferenceFragmentを利用した実装方法を採用します。
実装は簡単で、新しくPreferenceFragmentを継承するクラスを作り、onCreateを以下のように実装するだけです、
1 2 3 4 5 6 7 |
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);</code> // XMLからPreferenceの設定を読込む addPreferencesFromResource(R.xml.preferences); } |
設定を表示するときは、次のようにFragmentManagerを利用します。
1 2 3 |
getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); |
後はPreferenceの情報を定義したXMLファイルを作成するだけです。
resフォルダの中にxmlフォルダが無ければ、新しく作成してください。
プロジェクトマネジャーからres\xml を右クリックし、新規作成(New)>Android XML Filesを選択します。
Resource Type をPreferenceにし、RootElementをPreferenceScreenにしてください。
後は、Structureタブから要素を追加するか、直接手で要素を追加してください。
各要素は以下の属性を持つ必要があります。(基本的に必須の属性)
- android:key ShreadPreferenceから値を取得するときのキー
- android:title ユーザに見える設定項目名
- android:defaultValue 設定項目の初期値
その他利用可能な属性はPreferenceのドキュメントに記載されています。
任意の属性のうち、頻繁に利用すると思われるものをあげておきます。
- android:summary 設定項目の説明
- android:dependency 他の設定項目の値に応じて表示非表示が切り替わる。依存する設定項目のandroid:keyを指定する。
2.利用できる値
SharedPreferences で利用できる値は以下のものになります。アプリの設定で利用する値としては十分網羅しているかと思いますが、これ以外の値を利用したい場合は独自にファイル読み書きする必要があります。
- Boolean
- Float
- Int
- Long
- String
- String
Set
3.設定された値の利用
基本的にはSharedPreferenceの値を読み取って利用することになります。
1 2 |
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); // fragmentから利用する場合は、this の代わりに getActivity() String foo = sharedPref.getString("key", "default value"); // "key" にキーを、default valueに初期値を設定 |