Auf meinem Layout habe ich einige Schaltflächen, um einige Optionen zu treffen und dann eine Schaltfläche, um eine Abfrage an eine Datenbank durchzuführen. Das Ergebnis dieser Abfrage wird in ListView
in diesem Layout angezeigt.
Das Problem ist, wenn ich nach der Abfrage den Bildschirm rotiere, verschwindet der ListView
und muss die Abfrage erneut durchführen.
Ich glaube, dass dies passiert, weil die Aktivität neu startet. Nach den Vorschlägen hier habe ich meine Aktivität im Manifest android:configChanges="orientation|keyboardHidden"
und hinzugefügt in meinem Code hinzugefügt:
Aber das funktioniert nicht.
Hier ist der vollständige Code meiner Aktivität:
%Vor%Das ist seltsam, weil ich eine andere Aktivität wie diese habe:
%Vor% Dies führt auch eine Abfrage an die Datenbank durch, zeigt sie auf einem ListView
an und behandelt dann die Benutzerauswahl. Wenn ich den Bildschirm rotiere, wird ListView
immer noch angezeigt.
Was kann ich tun?
Verwenden Sie configChanges in Ihrer Aktivität in der Manifestdatei.
%Vor%Das hat für mich funktioniert.
Es gibt 2 Dinge, die deine Probleme lösen können:
Solver A:
android:configChanges="orientation|keyboardHidden"
in Ihre Manifest-XML -Datei hinzu. onConfigurationChanged(Configuration newConfig)
function. Weil onCreate()
nur einmal bei jeder Initialisierung Ihrer Aktivität aufgerufen wird. Während Ihre onConfigurationChanged()
die neue Ansicht R.layout.mylayout
mit leeren Daten neu lädt und aufbläht = & gt; Ihre Liste wird nicht mit Daten gebunden.
Löser B:
Verschieben Sie Ihren Datenbindungscode, der in onCreate () in die überschreibende Methode onStart()
oder % co_de geschrieben wurde % Ich empfehle, dass Sie onResume()
für Ihren Fall der Datenbindung verwenden.
Sie sollten die Entwicklerseite onStart()
sehen / p>
(Aktualisieren):
Weil Sie Ihre Android Activity life cycle
beim Klicken auf eine Suchschaltfläche auf dem Listenelement laden, müssen Sie die Daten innerhalb der Aktivität pflegen, um die Liste daraus neu aufzubauen (z. B. eine Suchfolge). Dann erstellen Sie in listContent
Ihre Liste aus diesen Daten neu.
Es ist jedoch ziemlich seltsam von Ihrer Logik, wenn Sie auf ein Listenelement klicken, um die gesamte Liste selbst zu ändern. Und beachte, dass onStart()
auch ausgelöst wird, wenn auf eine Schaltfläche auf dem Listenelement geklickt wird.
Sie müssen die Abfrage wiederholen (wenn Sie sie nicht speichern), wenn Sie eine Orientierungsänderung vornehmen, denn wenn dies erledigt ist, wird oncreate erneut aufgerufen.
Sie könnten versuchen, die Daten zu speichern, die sich in Ihrer Listenansicht befinden, etwa in gemeinsamen Einstellungen.
Tags und Links android android-activity listview