2011/10/02

PreferenceListで選択されたPreferenceを判別する方法


アプリ設定の読込みや保存に利用できるPreference。
Preferenceの編集にはPreferenceActivityを利用することができます。

今回はPreferenceActivityを使用する前提で、ユーザが選択したPreferenceを
判定する方法です。

1. Preference選択時のコールバックを拾う
PreferenceActivityの下記メソッドをオーバーライドする
android.preference.PreferenceActivity.onPreferenceTreeClick(PreferenceScreen, Preference)

2. 選択したPreferenceを判別する
ユーザが選択したPreferenceの判別には下記のメソッドが使用できる
android.preference.Preference.getKey()

getKey()で返ってくる値は、Preferenceのリソース(下記メソッドで指定するxml)
で指定するandroid:keyの値となる。
android.preference.PreferenceActivity.addPreferencesFromResource(int)

一連のソースは下記

・Preference(config.xml)
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
	xmlns:android="http://schemas.android.com/apk/res/android">
	<PreferenceCategory
		<EditTextPreference 
			android:key="follow_user"
			...
	</PreferenceCategory>
</PreferenceScreen>

・Preference設定画面
public class TwitterWidgetConfigure extends PreferenceActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.config);
	}

	@Override
	public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
			Preference preference) {
		// key"follow_user"が返される
		android.util.Log.e("yuki", "yuki key=" + preference.getKey());
		return true;
	}

以上です。