Meine Ansichten werden zurückgesetzt auf die Ausrichtung ändern
Habe ich eine kleine Aktivität mit einem EditText und eine Bildansicht und eine Schaltfläche. Wenn Sie die Taste drücken, es startet die Kamera für das Ergebnis, und wenn es zurück es ändert die Bildansicht auf das Bild, das Sie gerade aufgenommen haben.
Aber, wenn sich die Ausrichtung ändert, wird die Bildansicht setzt auf den Standardwert zurück auf das layout.
Was ich versucht habe zu tun war, setzen eines boolean namens custom, und wenn Sie ein Bild aufnehmen, es setzt ihn auf true. Ich overrid onConfigurationChanged() und wenn custom eingestellt ist wahr, dass ich das Bild wiederhergestellt.
Mein problem ist jetzt das EditText wird gelöscht -- Wie kann ich wieder die EditText nach der Konfiguration ändern? Mein Erster Versuch war speichern Sie den Inhalt in einen String onPause() und dann wiederherstellen, aber es kommt immer leer.
InformationsquelleAutor Sebastian | 2011-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel, wenn UI-Ansicht nicht zu halten, seinen Zustand, erste, was zu überprüfen ist, dass dieses UI-view-id zugeordnet. Ohne diese id-Ansichten lassen sich nicht wiederherstellen Ihres Staates.
Wenn das nicht hilft, müssen Sie zum speichern und wiederherstellen Staat selbst. Werfen Sie einen Blick auf Handling Runtime Changes. Es ist ziemlich viel erklärt, was Sie tun sollten:
Sollten Sie überschreiben
onSaveInstanceState()
und speichern Sie Ihre Unternehmung Zustand, wenn seine genannt:Und dann den Zustand wiederherstellen, in
onCreate()
oderonRestoreInstanceState()
:Wenn dies immer noch nicht ausreichen, können Sie überschreiben
onRetainNonConfigurationInstance()
und Rückgabe einer benutzerdefinierten Objekt, das übergeben wird, um neue activity-Objekt, wenn seine neu erstellt. Mehr details darüber, wie es zu benutzen finden Sie in Handling Runtime Changes. Aber diese Funktion ist veraltet in Android 3.0+ (speziell fürFragmentActivity
wo seine endg.). Also, dies kann nicht verwendet werden, zusammen mit Fragmenten (was in Ordnung ist, Sie Ihren Mechanismus zu behalten-Objekte über änderungen an der Konfiguration).- Und Letzte - nie
android:configChanges
. Sie müssen sehr gute Gründe, es zu benutzen, und in der Regel sind diese performance-Gründen. Es war nicht gedacht, missbraucht zu werden, wie es jetzt ist: einfach um zu verhindern, dass UI-Status zurücksetzen. Wenn dieses Attribut verwendet wird, dann ja, Aktivität UI wird nicht re-config ändern, sondern Aktivität, Status immer noch zurückgesetzt wird, wenn Sie zerstört und neu erstellt später.In der Dokumentation erklärt, diese option ziemlich gut:
Wenn die bitmap auf der Festplatte gespeichert, dann Speichere nur den Pfad zu der bitmap in
onSaveInstanceState()
Funktion. Wenn die bitmap in den Speicher, dann können SieonRetainNonConfigurationInstance()
.InformationsquelleAutor inazaruk
Können Sie erzwingen, dass Ihre Tätigkeit nicht neu zu laden nach der Ausrichtung verändert, indem
android:configChanges="orientation"
auf Ihre Tätigkeit line-in-manifest.Dies ist die richtige Antwort. Die eine, die verhindert, dass der Bildschirm zu ändern der Orientierung ist
android:screenOrientation="portrait"
Während diese Korrekturen in diesem speziellen Fall, seine nicht zu beheben das zugrunde liegende Problem. Und
android:configChanges
als letzten Ausweg, und sollte normalerweise nicht verwendet werden. developer.android.com/guide/topics/resources/...InformationsquelleAutor superM