2016-09-20 7 views
-1

Ich muss einen Ereignis-Listener für eine benutzerdefinierte Einstellung festlegen, die in einem verschachtelten PreferenceScreen enthalten ist.Wie wurde festgestellt, dass ein verschachtelter Preference-Bildschirm geladen wurde?

Meine benutzerdefinierte Einstellung ist ein spezielles Kontrollkästchen zum automatischen Auswählen/Abwählen einer Reihe von CheckBoxPreferences. Wenn ich jedoch versuche, den Ereignis-Listener einzurichten, bevor der PreferenceScreen angeklickt und angezeigt wird, kann ich keinen Verweis auf das Kontrollkästchen erhalten Ich möchte meinen Klick-Listener aktivieren.

Ich kann nicht scheinen, eine Methode zu finden, nach der nur aufgerufen wird, wenn der geschachtelte Einstellungsbildschirm angezeigt wird. Ich habe versucht, .getDialog() zu tun und mit seinen Listenern zu spielen, aber wieder bekomme ich einen NULL-Verweis, bis der verschachtelte PreferenceScreen tatsächlich angezeigt wird.

+0

Warum postest du die .xml-Datei? – greenapps

Antwort

0

Um den Wert einer beliebigen Präferenz zu erhalten, rufen Sie einfach getDefaultSharedPreferences() auf. Sie benötigen keinen Rückruf. Laden Sie einfach den Wert, der über das Kontrollkästchen gesetzt wurde.

+0

Ich brauche den Wert nicht, ich musste einen UI-Callback einstellen und automatisch die anderen ändern, wenn ich damit interagiere. Ich fand eine Arbeit, bei der ich nicht genau wissen musste, wann der Bildschirm aktualisiert wurde. – Gubatron

0

Die Lösung, die ich zu diesem Problem fand, war, den UI-Listener meiner benutzerdefinierten Einstellung in seinem Quellcode zu definieren, nachdem seine inneren Komponenten aufgeblasen wurden (in der protected View onCreateView(ViewGroup parent)-Methode), nicht auf die Einstellungen Aktivität, wie ich immer Null erhielt Hinweis, da es zu früh war, um es zu erfassen, und ich konnte keine Möglichkeit finden, zu erkennen, wenn der geschachtelte Einstellungsbildschirm geladen wurde.

Verwandte Themen