PreferenceActivityを活用したAndroid開発
PreferenceActivityは、Androidにおけるアプリのプリファレンス設定を表す特殊なアクティビティです。PreferenceActivityを使用すると、開発者は設定画面を簡単に作成したり、ユーザーのプリファレンス設定をSharedPreferencesに保存したりできます。
PreferenceActivityを使用する手順は次のとおりです。
- PreferenceActivityを継承したクラスを作成し、その中にアプリケーションの設定オプションを定義します。設定オプションはxmlファイルを使用して定義できます。たとえば、SettingsActivityという名前のクラスを作成します。
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
設定項目を格納するxmlファイルはR.xml.preferencesです。
- ユーザーがメニューやその他から設定画面を開けるように、AndroidManifest.xmlでこのアクティビティを登録する。例えば、AndroidManifest.xmlに次のコードを追加する。
<activity android:name=".SettingsActivity" />
- 設定項目を定義するためにXMLファイルを作成します。res/xmlディレクトリにpreferences.xmlという名前のファイルを作成し、その中に設定項目を定義します。例えば:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="General">
<CheckBoxPreference
android:key="notification_enabled"
android:title="Enable Notifications"
android:summary="Enable or disable notifications" />
<EditTextPreference
android:key="username"
android:title="Username"
android:summary="Enter your username" />
</PreferenceCategory>
</PreferenceScreen>
通知を有効または無効にするためのチェックボックスオプションと、ユーザ名の入力に使用するテキスト入力ボックスオプションという 2 つの設定オプションが定義されています。
- 別のActivityからSettingsActivityをIntent起動することで設定画面を開くことができます。例えば、MainActivityに以下のようなコードを追加します。
Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent);
選択したボタンやメニューアイテムに応じて、設定画面を開きます。
上の手順を行うと、PreferenceActivity を使って、アプリケーションのプリファレンス設定を作成・管理できます。また、PreferenceActivity では、SharedPreferences オブジェクトによって、ユーザのプリファレンス設定を読み込んだり保存したりできます。たとえば、SettingsActivity には次のコードを追加できます。
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean notificationEnabled = preferences.getBoolean("notification_enabled", true);
String username = preferences.getString("username", "");
そうすることで、SharedPreferencesオブジェクトを通じてユーザーの優先設定を取得し、それに応じて必要な操作を実行できます。