2016-06-14 15 views
-1

Wenn wir mehrere Einstellungen wie checkbox, edittext, Listenpräferenzen haben, wie manOnPreferenceClickListener auf diese Elemente gleichzeitig setzt, anstatt den Listener auf jede Einstellung zu setzen. Ich muss für die neuesten Geräte (> 4.0) unterstützen.setOnPreferenceClickListener für mehrere Einstellungen

Sagen wir, wenn wir 10 Einstellungen unter verschiedenen Kategorien haben und wenn wir den Listener auf alles einstellen müssen, möchte ich nicht alle Präferenzen separat finden und den Code dafür schreiben. Verwenden Sie einige Loops, um alle Preferences auf einmal zu erhalten. Gibt es eine Möglichkeit, nur einen Listener zu schreiben und Switch Case zu verwenden?

Antwort

0

Nun, wenn Sie alte Mode-Vorlieben verwenden (Sie verwenden addPreferencesFromResource()), dann können Sie onPreferenceTreeClick() Funktion überschreiben.

Wenn Sie moderne - fragmentbasierte Voreinstellungen verwenden, sollten Sie onPreferenceStartFragment() überschreiben. Ich habe diese Lösung noch nicht getestet, aber laut Dokumentation ist das genau das, was Sie suchen.

Beide Funktionen übergeben als Argument Präferenzobjekt, wo Sie Präferenzschlüssel finden können ... Die erste Option funktionierte für mich, und ja, ich bin eine Art altmodischer Typ.

EDIT

Wenn Fragment basierend Aktivität mit: Sie müssen Hörer an jedem Punkt nicht festlegen klicken. Überschreiben Sie einfach onPreferenceTreeClick() in PreferenceFragment Klasse. Hier ist ein Beispiel.

public static class GeneralPreferenceFragment extends PreferenceFragment { 
    @Override 
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 
     switch (preference.getKey()){ 
       case "key_1": 
        //Do your stuff 
        break; 
     } 
     return super.onPreferenceTreeClick(preferenceScreen, preference); 
    } 
} 
+0

Vielen Dank! @ user1557434 Ich verwende Fragment-basierte Präferenz. Oder gibt es eine andere Möglichkeit, wie ich "OnPreferenceClickListener" in den Einstellungen festlegen kann? – akm

+0

Ich habe meine Antwort aktualisiert. – user1557434

Verwandte Themen