プリファレンスを使用した設定画面の作成Androidアプリケーション開発者のためのTips集(17)(1/2 ページ)

Androidアプリ開発者のためのTips集。主にアプリの設定情報の保存などに使用されるプリファレンス。今回は、このプリファレンスを利用した標準的な設定画面の作成方法を紹介する。

» 2012年07月23日 11時05分 公開
Android Tips

Tips概要と動作検証環境

用途 便利
カテゴリ 画面
レベル 中級
動作確認環境 Android 2.3.3(GingerBread) エミュレータにて動作確認
備考 今回のTipsは上記環境で動作確認・検証を行っています


Tips 17:プリファレンスを使用した設定画面の作成

 前回のTipsでは、Androidにおけるデータ保存の方法の1つ「プリファレンス」を紹介した。

 プリファレンスは、主にアプリの設定情報の保存などに使用されるが、実はプリファレンスを利用して、標準的な設定画面を作成することができる。

 今回は、プリファレンスを使った設定画面の作り方を紹介しよう。

標準的な設定画面

 前回のTipsで紹介したサンプルアプリでは、「名前」と「年齢」を登録するためのUIを手作業で用意していた。

 実は、「PreferenceActivity」という種類の画面を使用すると、設定項目に応じた入力UIを自動的に生成してくれる。PreferenceActivityは、XMLで定義された設定内容に基づいて自動的に入力画面を表示、ユーザーの入力内容をプリファレンスに保存してくれるActivityだ。

 PreferenceActivityを使用すると、XMLの定義から以下のような設定画面を作成してくれる(画像1)。

PreferenceActivityを使用した設定画面の例 画像1 PreferenceActivityを使用した設定画面の例

PreferenceActivity の使用手順

 プリファレンスそのものについては前回のTipsで説明したので、早速、PreferenceActivityの使用手順を説明しよう。PreferenceActivityの使用手順は、以下のようになる。

  • 設定項目定義のXMLを作る
  • Activityの代わりにPreferenceActivityを使って画面を作成する

 まずは簡単な例として、前回と同様にユーザーの名前と年齢を登録するための画面を作成してみよう。

設定項目定義XMLを作る

 PreferenceActivityで表示する設定項目は、あらかじめXMLで定義しておく必要がある。プロジェクトの「res」ディレクトリの下に、「xml」ディレクトリを作成して、その中に適当な名前で設定項目定義のXMLファイルを配置する。

 ユーザーの名前、年齢を登録させるためのXMLは、以下のようになる。

    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory android:title="名前と年齢の登録">
            <EditTextPreference
                android:key="user_name"
                android:title="お名前"
                android:summary="あなたのお名前を教えてください"
                android:dialogTitle="お名前" />
            <EditTextPreference
                android:key="user_age"
                android:title="年齢"
                android:summary="あなたの年齢を教えてください"
                android:dialogTitle="年齢"
                android:inputType="number" />
        </PreferenceCategory>
    </PreferenceScreen>

 EditTextPreferenceタグを2つ定義している。それぞれのタグにはタイトル、説明文、入力ダイアログのタイトルと、値を保存する時のキー名を指定している。年齢の方のEditTextPreferenceタグには数字だけを入力させたいので「android:inputType="number"」が指定してある。

 設定項目は、EditTextの他にもチェックボックス、リスト選択が使用できるが、それについては後述する。なお今回は、上記のXMLを「res/xml/name_and_age_setting.xml」として保存した。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.