飴屋

Androidアプリメモ/メモ1

設定画面を便利にしたい

習作となる開発中のアプリでは、設定画面を使ってアプリで使用される共通の情報(sharedPreference)の設定を行います。設定画面のActivityはPreferenceActivityを継承しているので、表示される設定項目の定義をXMLで済ませるだけで簡単に実装が済んでしまいました。

ただ、PreferenceActivityでやってくれるのはsharedPreferenceの設定までですので、それ以上のことをこの画面で行う場合は別の作業が必要となります。

具体的には、入力された体重データの「インポート」「エクスポート」「リセット」を設定画面を通して行いたいと思いました。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/titleCategoryDatabase" android:key="categoryDatabase">
<PreferenceScreen android:key="importDatabase" android:title="@string/titleImportDatabase"
android:summary="@string/summaryImportDatabase"></PreferenceScreen>
<PreferenceScreen android:title="@string/titleExportDatabase" android:key="exportDatabase"
android:summary="@string/summaryExportDatabase"></PreferenceScreen>
<PreferenceScreen android:title="@string/titleClearDatabase" android:key="clearDatabase"
android:summary="@string/summaryClearDatabase"></PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>

設定項目の定義XML上では上記のようにデータベース関連の処理をまとめたPreferenceCategoryの中に三つPreferenceScreenを入れて、それぞれにimportDatabase、exportDatabase、clearDatabaseというキーを割り当てています。
PreferenceScreenは、画面上では押下可能な領域として表示されますので、この領域がタップされたときに「インポート」「エクスポート」「リセット」の処理を行うことにします。

@Override
public boolean onPreferenceTreeClick(PreferenceScreen scr,Preference pref) {
if (pref.getKey().equals("importDatabase")) {
// インポート
} else if (pref.getKey().equals("exportDatabase")) {
// エクスポート
} else if (pref.getKey().equals("clearDatabase")) {
// リセット
}
return super.onPreferenceTreeClick(scr,pref);
}

設定画面用のActivityのソースでは既にonCreateが上書きされていますが、それに加えてonPreferenceTreeClickも上書きすることにします。上述のPreferenceScreen要素がタップされるとこのメソッドが呼び出されることになりますので、第2引数で渡ってくるPreferenceのgetKeyメソッドを叩いてどのPreferenceScreen要素がタップされたかキーを確認して処理を振り分けています。

メモ一覧

Last-Modified