Erhalten der Sichtbarkeit der Fortschrittsanzeige bei Änderung der Ausrichtung
Ich habe einen Fortschrittsbalken (swirly waiting style) in XML definiert als:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.ProgressBar.Large"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/progress"
/>
Ich verstecke seine Sichtbarkeit in der AktivitätonCreate
Methode mit,
progressBar.setVisibility(View.GONE);
und starte es auf KnopfdruckonClick
Ereignis mit
progressBar.setVisibility(View.VISIBLE);
Wenn ich nun die Bildschirmausrichtung ändere, verschwindet der Fortschrittsbalken. Ich verstehe, dass die Aktivität bei einer Änderung der Ausrichtung zerstört und neu erstellt wird und der Status der Aktivität in der neuen Ausrichtung aus den gespeicherten wiederhergestellt wirdBundle
savedInstanceState
. So bin ich richtig in der Annahme, dass die StandardeinstellungBundle
Gespeichert von Android enthält keine Änderungen an aProgressBar
Objekt anzeigen?
Wenn dies der Fall ist, ist es richtig zu sagen, dass dies die einzige Möglichkeit ist, die korrekte Sichtbarkeit derProgressBar
nach einer Orientierungsänderung soll ein Flag gespeichert werden (z.boolean pbState = false/true
) durch Überschreiben der MethodeonSaveInstanceState
und Inspektion dieser Flagge inonRestoreInstanceState
und die Sichtbarkeit entsprechend einstellen? Oder fehle ich etwas wirklich offensichtliches über das Speichern der Ansichtsstatusobjekte.
Vielen Dank
AKTUALISIEREN:Beide unten aufgeführten Lösungen funktionieren. Ich habe mich für das Putten entschiedenandroid:configChanges="orientation|screenSize"
in der XML-Manifestdatei. In der Dokumentation wird jedoch angegeben, dass diese Methode nur alsletzter Ausweg. Meine Aktivität ist ziemlich einfach, und so reduziert die XML-Methode des Manifests die Menge an Code, die für die Hauptaktivität erforderlich ist, d. HonRestoreInstanceState
Methode. Ich nehme an, wenn Ihre Aktivität komplexer ist, möchten Sie möglicherweise explizit Statusänderungen mit der letzteren Methode definieren.