Meine Ansichten werden bei der Orientierungsänderung zurückgesetzt

Ich habe eine kleine Aktivität mit einem EditText und einem Imageview und einem Button. Wenn du die Taste drückst, startet sie die Kamera zum Ergebnis, und wenn sie zurückkehrt, ändert sie die Bildansicht auf das Bild, das du gerade genommen hast.

Aber wenn sich die Ausrichtung ändert, wird die Bildansicht wieder auf die Standardeinstellung zurückgesetzt.

  • Schwarzer Bildschirm in der inneren PräferenzScreen
  • Was bedeuten die Android-Studio-HPROF-Referenzbaum-Elementfarben?
  • Android: Zxing Barcode-Scan erfolgreich, aber nicht von der Aktivität zurückkehren
  • Erstellen einer Kopie einer Ansicht?
  • Wie man dynamisch Vorschläge zum Autovervollständigen mit dem Erhalten des Zeichenstatus hinzufügen kann
  • Warum textStyle kursiv wird nicht im Android-Layout für andere Schriften als serif angewendet?
  • Was ich versuchte zu tun, war die Einstellung eines Booleschen namens benutzerdefinierte, und wenn Sie ein Bild machen, setzt es es auf wahr. Ich übersprache onConfigurationChanged () und wenn custom auf true gesetzt ist, stelle ich das Bild wieder her.

    Mein Problem ist jetzt, dass das EditText gelöscht wird – Wie kann ich das EditText nach der Konfigurationsänderung wiederherstellen? Mein erster Versuch war es, den Inhalt in eine String onPause () zu speichern und dann wiederherzustellen, aber es kommt immer leer.

  • Benutzerdefinierte Benachrichtigungsansicht
  • Wie benutzt man File Explorer auf einem verwurzelten Gerät?
  • Cordova / Ionic Build-Fehler (manchmal): keine Umgebungsbedingung
  • Was zu tun ist, wenn app abstürzt und logcat keine fehler zeigt
  • Android-Leinwand DrawText y-Position des Textes
  • RelativeLayout Gewicht
  • 2 Solutions collect form web for “Meine Ansichten werden bei der Orientierungsänderung zurückgesetzt”

    Normalerweise, wenn UI-Ansicht nicht seinen Zustand behalten, ist das erste, was zu überprüfen ist, dass diese Benutzeroberfläche eine ID zugewiesen hat. Ohne diese ID-Ansichten können sie ihren Zustand nicht wiederherstellen.

    <EditText android:id="@+id/text" ... /> 

    Wenn dies nicht hilft, müssen Sie speichern und wiederherstellen Zustand selbst. Werfen Sie einen Blick auf Handling Runtime Changes . Es ziemlich genau erklärt, was Sie tun sollten:

    Um einen Neustart richtig zu verarbeiten, ist es wichtig, dass Ihre Aktivität ihren vorherigen Zustand durch den normalen Aktivitätslebenszyklus wiederherstellt, in dem Android onSaveInstanceState() anruft, bevor es Ihre Aktivität zerstört, damit Sie Daten über den Anwendungsstatus speichern können. Sie können dann den Status während onCreate() oder onRestoreInstanceState() wiederherstellen. Um zu testen, dass Ihre Anwendung mit dem Anwendungszustand intakt neu gestartet wird, sollten Sie Konfigurationsänderungen (wie zB die Änderung der Bildschirmausrichtung) aufrufen, während Sie verschiedene Aufgaben in Ihrer Anwendung ausführen.

    Sie sollten onSaveInstanceState() überschreiben und Ihren Acitivity-Status speichern, wenn es aufgerufen wird:

     @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("textKey", mEditText.getText().toString()); } 

    Und dann wiederherstellen Zustand in onCreate() oder onRestoreInstanceState() :

     public void onCreate(Bundle savedInstanceState) { if(savedInstanceState != null) { mEditText.setText(savedInstanceState.getString("textKey")); } } 

    Wenn dies noch nicht ausreicht, können Sie onRetainNonConfigurationInstance() überschreiben und jedes benutzerdefinierte Objekt zurückgeben, das an das neue Aktivitätsobjekt übergeben wird, wenn es neu erstellt wird. Weitere Informationen zur Verwendung finden Sie unter Handling Runtime Changes . Aber diese Funktion ist in Android 3.0+ veraltet (speziell für FragmentActivity wo sein Finale). So kann dies nicht zusammen mit Fragmenten verwendet werden (was in Ordnung ist, haben sie ihren Mechanismus, um Objekte über Konfigurationsänderungen zu behalten).


    Und endgültig – niemals verwenden android:configChanges . Sie müssen sehr gute Gründe haben, es zu benutzen, und in der Regel sind dies Leistungsgründe. Es war nicht gemeint, dass es so missbraucht wurde, wie es jetzt ist: nur um zu verhindern, dass der UI-Status zurückgesetzt wird. Wenn dieses Attribut verwendet wird, dann ja, wird die Aktivitäts-UI bei der Konfigurationsänderung nicht neu gesetzt, aber der Aktivitätsstatus wird immer noch zurückgesetzt, wenn er zerstört und später neu erstellt wird.

    Die Dokumentation erklärt diese Option ganz gut:

    Anmerkung: Die Handhabung der Konfigurationsänderung selbst kann es viel schwieriger machen, alternative Ressourcen zu verwenden, da das System diese nicht automatisch für Sie anwendet. Diese Technik sollte als letzter Ausweg betrachtet werden und wird für die meisten Anwendungen nicht empfohlen

    Sie können Ihre Aktivität nicht zwingen, nach der Orientierung neu zu laden, indem Sie android:configChanges="orientation" hinzufügen android:configChanges="orientation" zu Ihrer Aktivitätszeile in Manifest.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.