Rotate >main?

  • 9 Antworten
  • Neuester Beitrag
Diskutiere Rotate >main? im Android App Entwicklung im Bereich Betriebssysteme & Apps.
R

rascal

Neues Mitglied
Hay Leute,
ich bin gerade an meiner ersten App, die is auch recht cool bisher^^
Habe im mom nur das Problem, dass es scheint, dass wenn ich mein Smartphone drehe, und sich das Display dan dreht geht, dann zeigt der wieder die main an oder geht wieder ins onCreate... wie kann man das unterbinden?
 
R

rascal

Neues Mitglied
Das verstehe ich scho ;) Danke
Allerdings handelt es sich bei der App um ne Stundenplan-App, bei welcher es ganz praktisch wäre sich den tabellarischen StdPlan quasi im "Breitbild" anzuschauen
 
Bobert

Bobert

Fortgeschrittenes Mitglied
Wenn ich Dich recht verstehe, möchtest Du den Bildschirm im "landscape" angezeigt bekommen.

Guckst Du hier. Das Zauberwort heist android:screenOrientation.



 
M

muck

Ambitioniertes Mitglied
Innerhalb der Anwendung kannst Du mit:
this.setRequestedOrientation(); //0=portrait, 1=landscape, 4=auto

z.B über Button/Kontext-/Options- menü zur Laufzeit ändern.
 
S

swordi

Lexikon
ich denke interessant für dich ist der activity lifecycle.

bei einem config change startet die activity neu, deshalb siehst du auch wieder deinen startzustand
 
R

rascal

Neues Mitglied
Also, ich habe ne main.xml in der nur ein Bild angezeigt wird. Dann gehe ich übers OptionsMenu ind die Settings.xml. Wenn ich nun in der Settings.xml bin, und mein Wildfire drehe, dann dreht sich der Bildschirm, zeigt mir gleichzeitig allerdings wieder die main.xml an, geht also wieder aus der settings.xml raus. Da die main.xml ja im OnCreate aufgerufen wird, denkeich dass der wieder ins OnCreate geht, der soll aber im Settings bleiben, wenn ich den Bildschirm drehe, gänzlich deaktivieren möchte ich die rotate-funktion nicht.

Ich dachte da gibt es soetwas wie OnRotate, habe ich aber nicht gefunden...
Und über einen Button den Bildschrim drehen halte ich für keine gute Lösung, das ganze soll schön intuitiv sein ;)

Ich habe euch mein Projekt mal angehangen. Also habe erst vor 2 Tagen mit der Programmierung von Java angefangen, konnte vorher nur c#, html, php, MySQL, PLSQL und Batch... das Programm is also noch nich wirklich weit, aber habe die .apk im bin genommen und auf meinem Wildfire installiert und läuft soweit super, bis auf dass der in den settings bei nem rotate wieder in die main springt.

MFG
Denis
 

Anhänge

  • GSO-Stupid.zip
    249 KB Aufrufe: 51
W

wilco

Fortgeschrittenes Mitglied
Hi Rascal,

Schau Dir mal bei Android das Konzept des Activity Lifecycles an. Wenn Du die Screen-Orientierung änderst wird die App neu gestartet. Wenn während die App läuft das Telefon klingelt und Android nach dem Anruf wieder zu Deiner App zurückkehrt, so wird diese neu gestartet. Es gibt noch weitere Szenarien in denen der Nutzer denk er "kommt zurück" zu Deiner App und erwartet dass Deine App genau da weiter macht wo er sie verlassen hat. De facto startet Android die App in vielen dieser Fälle allerdings neu. Deine Aufgabe als Programmierer ist es nun dafür zu sorgen dass die App bei einem solchen Neustart wieder in den Status geht den sie beim Abbruch hatte, so dass es für den Nutzer so aussieht als sei sie nie beendet worden und er käme einfach zu ihr zurück.

Konkret heisst das: in der onPause() Methode sicherst Du den Zustand Deiner App in ein Bundle und übergibst dieses dem Android OS. In onCreate() erhältst Du vom Android OS das Bundle wieder übergeben und bringst mittels der darin enthaltenen (von Dir vorher reingepackten) Werte die App wieder in den vorherigen Zustand.

Wenn Du das gescheit hinkriegst hast Du eines der schwierigsten und gleichzeitig wichtigsten Prinzipien der App Programmierung auf Android gemeistert.
 
R

rascal

Neues Mitglied
Super, also is die Antwort auf mein Problem im Prinzip dashier:

Storing and Retrieving State


If your application is dumped from memory because of space concerns, it will lose all user interface state information such as checkbox state and text box values as well as class member values. Android calls Activity.onSaveInstanceState before it pauses the application. This method hands in a Bundle that can be used to store name/value pairs that will persist and be handed back to the application even if it is dropped from memory. Android will pass this Bundle back to you when it calls onCreate(). This Bundle only exists while the application is still in the history stack (whether or not it has been removed from memory) and will be lost when the application is finalized. See the topics for onSaveInstanceState(Bundle) and onCreate(Bundle) for examples of storing and retrieving state.
Read more about the lifecycle of an activity in Activities document.

EDIT: Habe gerade bemerkt, wenn ich in der settings.xml bin, und das App über den Homne-Button verlassen, und dann wieder starte, DANN beginnt er da wo er vorher aufgehört hat, nämlich in der settings.xml, und nich in der main.xml o0
 
Zuletzt bearbeitet:
R

rascal

Neues Mitglied
In den erklärungen zu "protected void onSaveInstanceState (Bundle outState)" steht iwie dass das app das automatisch macht, und wie oben geschrieben, wenn ich raus gehe und wieder rein macht der da weiter wos aufgehört hat, nur nicht wenn ich das display drehe, kann mir einer sagen was ich da machen soll?