функция setOnPreferenceClickListener не работает для предпочтений на Android
Я использую приведенный ниже код для печати текста в logcat, но функция setOnPreferenceClickListener
не улавливает событие.
Я использую Android API Level 8 для тестирования кода.
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:defaultValue="true"
android:key="settings_use_cache"
android:summary="Use cache"
android:title="Use Cache" />
<Preference
android:defaultValue="true"
android:key="settings_delete_cache"
android:summary="Delete all cache data"
android:title="Clear Cache" />
</PreferenceScreen>
Вот код
public static class CachePreferenceFragment extends
PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.w("DBG", "Oncreate started");
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_cache);
Preference settings_delete_cache=findPreference("settings_delete_cache");
settings_delete_cache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Log.w("Prefence", "Deleting Cache");
return false;
}
});
}
}
Что я могу сделать, чтобы гарантировать, что слушатель поймает событие?
1 ответ:
Править: После разговора с этим Дэв вне потока было определено, что проблема заключалась в том, что он помещал своего слушателя внутрь фрагмента. Таким образом, этот код действительно работает, но он будет выполняться только при использовании двухпанельного макета. Фактически это указано прямо над методом:
/** * This fragment shows notification preferences only. It is used when the * activity is showing a two-pane settings UI. */ public static class CachePreferenceFragment extends PreferenceActivity {
Решение состоит в том, чтобы также установить прослушиватель onPreferenceClick в setupSimplePreferencesScreen()!