- Forum-Beiträge: 28
12.04.2018, 16:42:24 via Website
12.04.2018 16:42:24 via Website
Guten Tag!
ich habe in diesem Forum gesucht udn verstehe nicht ganz, wie es laufen soll, wenn ich nach einem Orientierungswechsel den Zustand meines Listviews unverändert sehen will.
ich dache, dass ich die Funktion saveInstanceState und restoreInstanceState wie folgt überschreibe und dass diese automatisch bei einem Orientierungswechsel ausgeführt werden.
Ich habe eine Funktion onSaveInstanceState, eine Funktion onRestoreInstanceState.
Jetzt führe ich in onCreate auch das Restore der Listview aus.
Der Code steht hier unten.
Im Log sehe ich jetzt alle Log-Einträge, die beweisen, dass die Funktionen alle ausgeführt werden.
Trotzdem ist die Listview verschwunden, sobald ich in die Landscape-Orientierung gehe.
Kann mir jemand sagen, was fehlen mag?
Vielen Dank im Voraus
MBoerner
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "*****INFO: saving listview state");
outState.putParcelable("listview.state", lvFoundBLE.onSaveInstanceState());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG, "*****INFO: restoring listview state");
Parcelable listViewState = savedInstanceState.getParcelable("listview.state");
lvFoundBLE.onRestoreInstanceState(listViewState);
}
und in OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState !=null) {
Log.i(TAG, "*****INFO: mListViewInstanceState = savedInstanceState.getParcelable");
mListViewInstanceState = savedInstanceState.getParcelable("listview.state");
}
setContentView(R.layout.activity_main);
.....
lvFoundBLE.setAdapter(adapter);
/// Evt zurückspielen der letzte Instanz (falls Bildschirm-Drehung)
if (savedInstanceState !=null && mListViewInstanceState!=null) {
Log.i(TAG, "*****INFO: vor lvFoundBLE.onRestoreInstanceState(mListViewInstanceState");
lvFoundBLE.onRestoreInstanceState(mListViewInstanceState);
Log.i(TAG, "*****INFO: nach lvFoundBLE.onRestoreInstanceState(mListViewInstanceState");
}
— geändert am 13.04.2018, 12:02:18
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.