Frage

Ich habe Vorlieben Aktivität haben, wo ich die Sprache und das Thema meiner Anwendung ändern können. Von dort komme ich zu der vorherige Aktivität über die Zurück-Taste, und ich möchte, um die Aktivität erstellen.

Ich habe es geschafft, das zu tun, indem Sie das Layout in onResume neu initialisiert und auch onRestoreInstanceState von dort anrufen. Alle Bilder sind korrekt gestellt, mit Kontrollkästchen aktiviert, wenn nötig, edittexts mit Texten gefüllt verließ ich dort vorher.

Aber ich habe auch eine Schaltfläche, die zunächst deaktiviert ist, und wird nur aktiviert, wenn ein Radiobutton aktiviert ist. Das Problem mit ihm ist folgende: Ich überprüfe das Radiobutton, wird die Schaltfläche aktiviert. Dann gehe ich auf den Einstellungen, das Thema dort ändern, und Rückkehr in der ersten Aktivität. Als ich dort ankomme, wird die Radiobutton als aufgegebene gestellt, aber die Schaltfläche deaktiviert.

So scheint es, dass die Aktivierungs- / Deaktivierungsstatus wird in das Bündel nicht gespeichert worden, die eingängig scheint. Und ich habe keinen Code im Android Quelle gefunden, das dies tut, auch. Bin ich etwas fehlt, oder muss ich meinen eigenen Code für das schreiben?

EDIT: BTW, Zustand gespeichert wird, nur für die Ansichten, die IDs haben. Und das Taste man tut, ich garantieren, dass:)

War es hilfreich?

Lösung

Sie hier Schlüssel ist, zu sehen, was tatsächlich die Taste aktiviert und um sicherzustellen, dass bei jedem Zugriff auf die Anwendung konsistent ist.

Von Ihrer Aussage:

  

Aber ich habe auch eine Schaltfläche, die zunächst deaktiviert ist, und wird nur aktiviert, wenn ein Radiobutton aktiviert ist.

scheint es, dass Sie einen Zuhörer auf dem Radiobutton haben, die auf den Button ermöglicht. Daraus entnehme ich, dass Sie die Taste zunächst deaktiviert ist, was bedeutet, dass Sie sich ändern müssen feststellen, dass jedes Mal, wenn die Aktivität ausgeführt werden.

Ihre Optionen sind wie folgt:

  • Haben Sie den Radiobutton eine Art globale Präferenz festgelegt, die in onResume geprüft wird, so dass die Taste ggf.
  • Wenn der Auswahlknopf aktiviert ist, die globalen Einstellungen ändern (oder vielleicht die GUI-Einstellungen) an, in dem die Schaltfläche aktiviert ist. Das kann für immer bleiben, bis die Radiobutton nicht aktiviert ist wieder.
  • Speichern der enabledness in onSaveInstanceState wie Sie erwähnen

Es ist schwer zu sagen, welche am besten geeignet ist, weil Sie nicht den Kontext des Anwendungsfalls erwähnt, aber ich würde vermeiden, dass es durch im Bündel zu senden, es sei denn es ist eine sehr gelegentlich Aktivität. Es macht sehr viel Sinn, durch Spur der Radiobutton Einstellung zu halten, entweder zu speichern oder die Sicht bis auf weiteres zu ändern.

Andere Tipps

Der einfachste Weg ist Ihre Schaltfläche in onResume zu aktivieren, wenn das Radiobutton aktiviert ist.

Bearbeiten : PreferenceGroup können Abhängigkeiten zwischen den Ansichten behandeln, aber es die Aktivität muss eine Unterklasse von PreferenceActivity .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top