Buduję działanie preferencji, w którym większość preferencji na liście będzie wykonywała kod i nie będzie bezpośrednio modyfikować udostępnionej subskrypcji. Mój plik preferences.xml wygląda następująco.Aktywność preferencji dla odbiorcy kliknięcia preferencji Prefiks
<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's 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>
Moim celem jest, aby blok kodu wykonywany, gdy jeden z tych preferencji są kliknięciu. Podobne do "Wyczyść historię wyszukiwania" w menu preferencji ustawień Google Play. (http://i.imgur.com/qnHbJX9.png)
Czy ktoś wie, jak to zrobić?
Muszę dodać, że próbowałem używać findPreference ("KeyNameHere"), ale zawsze zwraca wartość null.
Dziękujemy!
Edit:
dodałem w tym kodzie i wdrożone OnPreferenceClickListener:
@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
Ale ta metoda nigdy nie jest wywoływana. Czy jest inny sposób na zrobienie tego?
Edit 2:
I odkryli, że jeśli ja wyjąć PreferenceCategory tagów więc ja zostaję z tym:
<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's 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" />
i nazywają to:
getPreferenceScreen().setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
});
następnie otrzymuję odpowiedź od zdarzenia kliknięcia. Jedyną wadą jest to, że muszę usunąć grupowanie preferencji. Ktoś wie, dlaczego tak jest i jak to naprawić?
+1 Twoje rozwiązanie podpowiedziało mi, co wybrałem w mojej aplikacji. Tworzę tablicę kluczy 'String', a następnie otrzymuję' Preference' dla każdego z nich i ustawię 'onPreferenceClick'. To kod kilku linii. Dzięki. – Sufian
, chociaż może się wydawać, że to prawda, ale metoda, która była użyta, została uznana za przestarzałą. Jeśli masz zaktualizowaną odpowiedź, edytuj swój wpis. Uwaga: getPreferenceScreen() jest przestarzałe. Dzięki – ralphgabb