2010年9月13日月曜日

Android アプリ設定画面を作成する CheckBoxPreference

CheckBoxPreferenceはtrue,falseを設定できるGUIです。


Android アプリ設定画面を作成するで作成したxmlレイアウトにCheckBoxPreferenceを追加します。

※キーはres/values/ids.xmlでname=checkbox,value=checkboxで設定しています。
※タイトル、要約はベタ書きしていますがres/values/strings.xmlで設定します。

PreferenceActivityを継承したアクティビティのonCreate()メソッドでは、addPreferencesFromResource()メソッドでxmlを読み込みます。

CheckBoxPreferenceのチェックの状態が変更されたイベントを処理するには
Context#findPreference()メソッドで、xmlレイアウトで設定したキーの値をもとにCheckBoxPreferenceインスタンスを取得します。
このCheckBoxPreferenceインスタンスにOnPreferenceChangeListenerをハンドルします。
package my.study.android;  

import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;

public class MainActivity extends PreferenceActivity {
 
    // チェックボックスPreferenceの PreferenceChangeリスナー
    private OnPreferenceChangeListener checkBoxPreference_OnPreferenceChangeListener =
        new OnPreferenceChangeListener(){
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                return checkBoxPreference_OnPreferenceChange(preference,newValue);
            }};
  

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //xmlレイアウトの読み込み
        this.addPreferencesFromResource(R.xml.pref);
        // キーを基に、チェックボックス設定のインスタンスを取得する
        CharSequence cs = getText(R.string.checkbox);
        CheckBoxPreference cbp = (CheckBoxPreference)findPreference(cs);
        // リスナーを設定する
        cbp.setOnPreferenceChangeListener(checkBoxPreference_OnPreferenceChangeListener);
    }
 

    private boolean checkBoxPreference_OnPreferenceChange(Preference preference, Object newValue){
        String summary;
        if (((Boolean)newValue).booleanValue()) {
            summary = "Checked:true";
        } else {
            summary = "Checked:false";
        }
        // 要約を変更する
        ((CheckBoxPreference)preference).setSummary(summary);
        // 変更を適用するために true を返す
        return true;
    }
 
}



【関連項目】
Android プリファレンスの編集
Android アプリ設定画面を作成する
Android アプリ設定画面を作成する CheckBoxPreference
Android アプリ設定画面を作成する EditTextPreference
Android アプリ設定画面を作成するRingtonePreference
Android アプリ設定画面を作成するListPreference
Android アプリ設定画面を作成する 依存関係を設定する
Android アプリ設定画面を作成する PreferenceScreen
Androidアプリ設定画面を作成する PreferenceScreen(別アクティビティ)

0 件のコメント: