Beiträge von marcof1

    Leider bin ich an dieser Stelle noch nicht ganz weitergekommen. Ich denke, ein Beispiel würde mir hier gut weiterhelfen - vielleicht wäre jemand so nett:


    Wir können ja annehmen, dass ich sowohl eine Variable (int x) der Activityklasse als auch eine
    Variable eines Objekts "a" aus einer anderen Klasse (a.getIntY()) so sichern möchte, dass diese sowohl beim Seiten(Activity-)wechsel innerhalb des Programms, als auch beim Drehen des Bildschirms erhalten bleiben und in entsprechenden Textviews (tv1 und tv2) beim erneuten
    Aufruf der Activity eingesetzt werden.


    1) In erster Linie interessieren mich die genauen Stellen (Methoden), wo Sicherungen dieser Art einzubauen sind. Ich gehe von onPause() aus - ist das richtig?
    2) Beim Rücksichern bin ich mir ebenfalls nicht ganz sicher wohin, damit alle Fälle abgedeckt sind. Hier tippe ich auf onResume().
    3) Sollte man interne Variablen anders behandeln als die externer Klassen?
    4) Neben dem Wohin verstehe ich auch noch nicht ganz das Wie. Hier würde mir eine Lösung für mein kurz skizziertes Beispiel denke ich die Augen öffnen und die Fragen 1-3 beantworten...


    Vielen Dank im Voraus!


    Gruß


    Marco

    Den Lebenszklus der Activities habe ich in der Theorie gut verstanden. Nur leider hapert es in der Praxis. Bislang habe ich es so verstanden:


    1) In der Methode protected void onSaveInstanceState(Bundle outState) muss ich die Werte sichern
    2) In der onCreate-Methode muss ich mit savedInstanceState.getInt() die Werte wieder zurücksichern.


    Meine Fragen dazu sind:
    1) Ist es richtig, dass ich für jede zu sichernde Variable eine neue Kostante erzeugen muss, in welche dieser Wert geschrieben wird (Eclipse fordert dies immer)? Wenn mehrere Variablen gesichert werden sollen, erscheint mir das sehr aufwendig.
    2) Was mache ich mit Objekten anderer Klassen? Die kann ich so doch nicht sichern, oder? Die werden, wenn ich den Bildschirm drehe, doch ebenfalls zerstört...


    Vielleicht habe ich gerade auch nur einen Denkfehler aber im Moment komme ich alleine einfach nicht zum Ziel...Vielen Dank schonmal...

    Ok, schonmal vielen Dank für die schnellen Rückmeldungen. Und ja, Lifecycle war anscheinend der richtige Stichpunkt und die beiden Methoden onSaveInstanceState() und onRestoreInstanceState() scheinen die Lösung zu sein. Hier werde ich mal ein wenig austesten und mich bei Fragen ggf. erneut melden ;)


    Zu der Kontrollklasse: Ich ändere einfach alle Methoden, die lokale Varibalen verändern dahingehend, dass sie die stattdessen die Methode setVariable() der Kontrollklasse aufrufen und lagere somit die Werte aus - das habe ich verstanden. Objekte dieser Klasse werden keine erzeugt sondern es wird lediglich auf die statischen Methoden/Variablen zugegrifen, ist das richtig? Welche (weiteren) Vorteile bietet dieses Vorgehen?

    Ich glaube dein größtes Problem ist der Lifecycle du hast alles in der OnCreate() oder seh ich das falsch?

    In der onCreate() habe ich bislang auch nicht wirklich viel stehen (außer den Aufruf des Layouts). Aktuell befüllen meine Berechnungsmethoden die TextViews am Ende mit setText und beim LayoutWechsel übernimmt dies eine extra Methode datenWiederherstellen(), die alle Variablen ausliest und die TextViews befüllt. Ist wie gesagt mein erstes kleines Projekt und einiges ist evtl. recht unkonventionell gelöst ;)

    Hallo!


    Ich bin sowohl hier als auch in der Android-Welt ganz neu. Nachdem ich mir in der Uni im letzten Jahr erste Java-Grundlagen angeeignet hatte, wollte ich diese jetzt mal in einem kleinen Android-Projekt praktisch anwenden. Nach den ersten Startschwierigkeiten funktionierte bislang alles ganz relativ gut - im Detail habe ich nun jedoch einige Probleme, die ich bislang nicht ganz nachvollziehen kann. Ich hoffe, dass die Fragen nicht schon mehrfach behandelt wurden...


    Im Wesentlichen zählt die App nur Punkte hoch (nach Buttonklick) für mehrere Mitspieler. Das ganze sind normale int-Variablen, deren Werte in die Textviews des Layouts übertragen werden. Auf dem ersten Blick funktionierte alles super, auf dem zweiten tauchen einige Bugs auf:


    1) Ich habe eine zweite Seite entworfen, auf die man kommt, wenn man einen bestimmten Button anklickt. Wenn man nun wieder auf die Ursprungsseite wechselt, sind alle Textviews wieder im Urspungsszustand (0 Punkte). Wenn ich nun den Button für die Punkte anklicke, zählt das Programm jedoch von da weiter, wo aufgehört wurde (vor dem Seitenwechsel). Also die Werte in den int-Variablen bleiben zwar bestehen, sind aber nicht mehr in den Textviews. Ich habe beim Seitenwechsel nun eine Methode datenWiederherstellen() eingebaut, die sämtliche Variablen ausliest und mit setText wieder in die Textviews schreibt -das funktioniet. Mir kommt diese Methode etwas umständlich vor. Daher meine Frage. Warum ist das überhaupt so und wie wird dieses Problem normalerweise umgangen?


    2) Das zweite Problem ist ähnlich, nur schwerwiegender. Wenn ich von der Hochkantansicht in die Queransicht wechsle, sind ebenfalls alle Punktzahlen wieder bei null - nur diesmal sind die Punktestände nicht mehr in den int Variablen enthalten. Ich kann sie also gar nicht mehr mit setText zurückschreiben. Auch hier würde ich gerne wieder wissen, welchen Hintergrund diese Verhaltensweise hat und wie man dieses Problem für gewöhnlich umgeht.


    Ich hoffe, ich konnte meine Probleme verständlich rüberbringen. Vielen Dank schonmal


    Marco