Rotation

K

Kane2

Ambitioniertes Mitglied
8
Hallo zusammen,
Ich hab gesehen, dass leider alles zurückgesetzt wird sobald das Android Telefon gedreht wird nach befragung von Tante Google habe ich herausbekommen, dass beim Drehen des Telefons die onDestroy() und onCreate() Methode neu aufgerufen wird.
Als Lösungen die mich nicht wirklich zufrieden stellen sind mir in den Sinn gekommen oder hab ich gefunden:

1. In der onCreate() Methode eine booleschen Variable nutzen die nach einmaliger Ausführung auf true gesetzt wird und alle Intialisierungen sind in der dazugehörigen if Abfrage .
2. Die Lösung von "AndroidGuys.com" dort wird allerdings mit nur einem Objekt gearbeitet, ich müsste aber mindestens 3 Objekte samt Inhalt über die onDestroy() onCreate() Methoden überleben lassen. Oder funktioniert das ganze auch irgendwie mit mehreren Objekten?
3. Das RotationsEvent abfangen und es lediglich eine Methode aufrufen lassen die den Bildschirm dreht aber sonst nichts macht.
4. Eine weitere Klasse schreiben die von Application erbt, weil die onCreate() Methode von Application wirklich nur beim starten aufgerufen wird während die Activity onCreate() Methode auch beim rotieren aufgerufen wird.

Was ist denn die beste Lösung bzw. wie machen das denn andere Programmierer von euch oder wie wird es in anderen Apps gemacht?
Ich hab auch noch was von onsaveInstanceState gelesen, allerdings weiß ich nicht genau wo diese einzusetzen wäre und was eigentlich genau der Parameter Bundle ist bzw. welche ich da übergeben muss/soll.
 
Wenn du das android:screenOrientation="portrait" in dein Manifest hinzufügst, wird deine Activity beim Drehen nicht neugestartet.
Ansonsten ist soweit ich weiß die OnSaveInstanceState() und onCreate(Bundle onSavedInstanceStates) dafür gedacht Werte zu erhalten.
 
Ich verstehe anhand der Erklärung immer noch nicht wirklich wie ich mehr als ein Object "überleben" lassen soll. Es ist immer nur die Rede von einem Objekt ich müsste aber den "Status" von 2 TextViews und einem String überleben lassen.
 
Ein beliebiges Objekt was auch die Instanz einer eigenen Klasse sein kann, welche als Datencontainer fungiert für die Informationen, die überleben sollen. Du musst schon selbst dafür sorgen, dass die Informationen aus Deinen Views in diesen Datencontainer gesammelt werden (onRetainNonConfigurationInstance() ). Nach der Konfigurationsänderung fragt man dann dieses Objekt ab ( getLastNonConfigurationInstance() ) und wenn es existiert füllt man die Views wieder mit den entsprechenden Informationen anstatt bei null zu beginnen wie beim initialen Programmstart.

Glaube habe gerade ein Déjà-Vue weil ich genau den Inhalt des genannten Links wiedergegeben habe :o

Ansonsten verweise ist auch immer wieder gern auf folgende Blog-Reihe: Rotational Forces…On Your Android App | AndroidGuys


Gruß,
Shini
 
Die gennante Blogreihe hab ich oben im Prinzip auch schon erwähnt. Also das heißt dann wohl, dass man doch alles selbst machen muss.
Muss ganz ehrlich gestehen ich find das ganze ein wenig komisch. Ich muss jedes Objekt auslagern und abspeichern und dann wieder neuladen das bei größeren Programmen sicherlich einiges an Daten sein kann nur weil sich das Layout verändert durchs Drehen oO.
 

Ähnliche Themen

P
Antworten
5
Aufrufe
1.390
jogimuc
J
deka
Antworten
8
Aufrufe
1.172
markus.tullius
markus.tullius
znieh99
Antworten
2
Aufrufe
2.995
znieh99
znieh99
Zurück
Oben Unten