Я создаю функцию предпочтения, в которой большинство предпочтений в списке будет выполнять код и не изменять SharedPreference напрямую. Мой файл preferences.xml выглядит следующим образом.
<PreferenceCategory
android:title="Connection" >
<Preference
android:id="@+id/settings_connectToNewComputer"
android:key="connectToNewComputer"
android:summary="Currently connected to:"
android:title="Connect to new computer" />
<Preference
android:id="@+id/removeDevice"
android:key="removeDevice"
android:summary="Remove this device from the computer whitelist"
android:title="Remove this device from computer" />
</PreferenceCategory>
<PreferenceCategory
android:title="About" >
<Preference
android:id="@+id/settings_About"
android:key="about"
android:summary="About me and my thanks to those who made this app great"
android:title="About Hue Pro" />
<Preference
android:id="@+id/contact"
android:key="contact"
android:summary="Contact me with comments, bugs, and suggestions for updates"
android:title="Contact me" />
</PreferenceCategory>
Моя цель - создать блок кода, когда будет нажата одна из этих настроек. Аналогично "Очистить историю поиска" в меню настроек настроек Google Play. (http://i.imgur.com/qnHbJX9.png)
Кто-нибудь знает, как сделать это возможным?
Мне нужно добавить, что я попытался использовать findPreference ( "KeyNameHere" ), но он всегда возвращает null.
Спасибо!
Edit:
Я добавил в этот код и реализовал OnPreferenceClickListener:
@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
Но этот метод никогда не вызывается. Есть ли другой способ сделать это?
Изменить 2:
Я обнаружил, что если я вытащил теги PreferenceCategory, то я останусь с этим:
<Preference
android:id="@+id/settings_connectToNewComputer"
android:key="connectToNewComputer"
android:summary="Currently connected to:"
android:title="Connect to new computer" />
<Preference
android:id="@+id/removeDevice"
android:key="removeDevice"
android:summary="Remove this device from the computer whitelist"
android:title="Remove this device from computer" />
<Preference
android:id="@+id/settings_About"
android:key="about"
android:summary="About me and my thanks to those who made this app great"
android:title="About Hue Pro" />
<Preference
android:id="@+id/contact"
android:key="contact"
android:summary="Contact me with comments, bugs, and suggestions for updates"
android:title="Contact me" />
и назовите это:
getPreferenceScreen().setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
});
тогда я получаю ответ от события click. Единственная нижняя сторона - мне нужно удалить группу предпочтений. Кто-нибудь знает, почему это так и есть способ исправить это?