1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Rotation

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Kane2, 10.08.2010.

  1. Kane2, 10.08.2010 #1
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    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.
     
  2. Fr4gg0r, 10.08.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    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.
     
  3. Shinigami, 10.08.2010 #3
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
  4. Kane2, 10.08.2010 #4
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    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.
     
  5. Shinigami, 11.08.2010 #5
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    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
     
  6. Kane2, 11.08.2010 #6
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    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.
     

Diese Seite empfehlen