German zwei screens

umsid

Member
Licensed User
Longtime User
Hallo Leute,

ich bin neu hier - war zwar vor ein paar Jahren schon mal da - hatte aber dann B4A zurück gestellt.

Ich habe eine sicherlich sehr triviale Frage - suche aber schon länger im Forum und finde nichts passendes.

Die Frage:
Gibt es ein Tutorial oder ein ganz einfaches Beispielprogramm in dem man sieht, wie mehrere Layoutseiten in einem Programm verwendet werden.

die Aufgabenstellung ist so einfach - ich trau's mir fast nicht sagen:
ich laden ein Layout in einem Activity mit
Activity.loadlayout("screen1")
Weiterhin füge ich ein Menü hinzu:
Activity.AddMeuItem("über...",about)

Wählt man diesen Menüpunkt an, soll einfach eine neue Seite aufgemacht werden.
Ich habe versucht, das so zu lösen:
Sub about_click()
StartActivity("about")
End Sub

Auf den ersten Klick funktioniert das auch - aber wenn ich das erste Layout schließe, dann öffnet sich das "About" wieder.

Ich denke, ich habe da wirklich zwei Instanzen geöffnet, statt einfach einen zweiten Bildschirm.

Ich möchte quasi über das Menü ein weiteres Layout anzeigen, das ich mit einem Button Click ereignis wieder schließe und auf das erste Layout zurück kehre.

Kann mir jemand mit ein paar Zeilen, oder einem Link zu einem Beispielprogramm oder einem Tutorial weiterhelfen?

vg
Guenter
 

klaus

Expert
Licensed User
Longtime User

umsid

Member
Licensed User
Longtime User
Hallo Klaus,

erst einmal herzlichen Dank für die schnelle Antwort.

So verkehrt bin ich doch nicht gelegen - ich habe quasi mein Programm (unabsichtlich) nach der Vorlage von TwoLayoutActivities gemacht.
das scheint mir auch eine sehr übersichtliche Version, da dabei die einzelnen Layouts auch ihren entsprechenden Code beinhalten.

Mein Problem bei genau dieser Variante ist folgendes:
Habe ich einmal auf Layout zwei gewechselt und dann wieder zurück gewechselt. bleibt das Layout2 "offen".

Im Layout1 habe ich einen Button integriert, der bei Click ein Activity.Finish ausführt.
Und genau dann kommt mein Problem - dann erscheint das Layout2.

Die Fragen hierzu:
Muss ich das Programm anders beenden?
Oder muss ich die anderen Layouts auch schließen?
Falls ja, wie stelle ich fest, ob die Layouts geöffnet wurden oder nicht?

Das Problem habe ich also nicht beim Wechsel der Layouts, sondern beim Beenden des Programms.

Viele Grüße und nochmals Danke.
Guenter
 

klaus

Expert
Licensed User
Longtime User
Im Layout1 habe ich einen Button integriert, der bei Click ein Activity.Finish ausführt.
Warum ?

Am Besten wäre es wenn Du dein Projekt als zip Datei posten würdest.
Da könnten wir dann genau sehen was Du wie gemacht hast.
Das Beispielprogramm funktioniert wie es soll, also muss an deiner Anwendung hängen.
 

umsid

Member
Licensed User
Longtime User
Hallo Klaus,

ich habe das TwoLayoutActivities modifiziert und angehängt.

Ich habe gar nicht angezweifelt, dass das Beispielprogramm nicht funktioniert. Nur "WIE BEENDE ICH DIESE APP?"

Das Problem ist folgendes:
Ruft mal die App auf,die ich modifiziert habe. Da gibt es unten jetzt einen Button Ende, der die App beenden soll.

Der funktioniert im Ersten Ansatz auch ;-) - er soll die App beenden, was er tut, wenn man das Layout2 nicht aufruft.

Wechselt man jetzt einmal ins Layout2, dann zurück ins Layout1 und versucht dann das Programm mit dem Button zu beenden, dann merkt man erst, dass der Ende Button nicht richtig funktioniert.
Er beendet nämlich nur das Layout1 - und das Layout2 bleibt jetzt offen stehen.

Meine Frage:
Wie beendet man die App - wenn man diese TwoLayoutActivities Version für mehrere "Screens" verwendet.

Vielleicht kannst Du auch noch kurz eine Antwort zu folgender Frage geben:
Die Hardware "zurück" taste wechselt auch rückwärts durch die Activities.
Wie kann man die Taste so umprogrammieren, dass (nach einer Messagebox) das Programm verlassen wird.

Vielen Dank für Deine Hilfe.
Guenter
 

Attachments

  • TwoLayoutActivities_mod.zip
    9.2 KB · Views: 240

MaFu

Well-Known Member
Licensed User
Longtime User
Da stellt sich erst mal die Frage: warum willst Du die App beenden? Das ist unter Android absolut unüblich.
Normalerweise startet man den Launcher oder eine andere bereits offene App. Die aktuelle App verschwindet dann in den Hintergrund, belegt keine (aktuell benötigten) Resourcen und wird bei Bedarf von Android automatisch beendet.
 

klaus

Expert
Licensed User
Longtime User
Das Problem ist folgendes:
Du hast Activity.Finish im Main Modul, hast aber keins im Layout2 Modul.
Das heisst dass Die die Layout2 Activity noch im Hintergrund ist.
Und wird wieder angezeigt wenn Du das Programm verlassen willst.
Eine Möglichkeit um das Problem zu beheben wäre, in Layxout2, Activity.Finish vor StartActivity("Main") eizubinden.
Android funktionert etwas ander als Du denkst.
Um eine Activity zu verlassen, egal welche oder auch das Programm, drückt man einfach den Back Button.
In deinem Programm kannst Du in Main den Button Button1 zum verlassen einfach wegnehmen und auch in Layout2 den Button btnNext wegnehmen.
Der Button btnNext wäre nützlich wenn du eine dritte Activity aufrufen wolltest, aber nicht um in die vorgehende Activity zuruck zu gehen.
Das Operatingsystem macht mit Alles mit dem Back Button.
Beiliegend die einfache Lösung.

Wan soll man Activity.Finish verwenden ?
Ein Programm mit 3 Activities:
Main
Activity2
Activity3

Beispiel 1:
Main
StartActivity(Activity2)
Activity2
StartActivity(Activity3)
Activity3
Back Button drücken.
Das System geht zu Activity2 zurück
Activity2
Back Button drücken.
Das System geht zu Main zurück
Main
Back Button drücken.
Das Programm wird verlassen.

Beispiel 2:
Main
StartActivity(Activity2)
Activity2
Activity.Finish
StartActivity(Activity3)
Activity3
Back Button drücken.
Das System geht zu Main zurück, weil in Activity2 Activity.Finish steht !
Main
Back Button drücken.
Das Programm wird verlassen.
 

Attachments

  • TwoLayoutActivities_mod1.zip
    9 KB · Views: 248
Top