Activity aufrufen und beenden

  • 15 Antworten
  • Letztes Antwortdatum
M

maksimilian

Ambitioniertes Mitglied
0
Hallo Ihr,

in einer MainActivity ordne ich den 3 Punkten in der App Bar mit der Methode onCreateOptionsMenu ein Options-Menu zu, in welchem mehrere Optionen ausgewählt werden können. Mit einer dieser Optionen soll eine Aktivität erzeugt werden, in welcher mit setContentView eine eigene Oberfläche angezeigt wird. In dieser Oberfläche befinden sich Buttons, mit welchen Aktionen ausgelöst werden. Einer dieser Buttons soll das Beenden der Aktivität auslösen. Nun meine Frage:
Wie erzeuge ich die Aktivität und wie kehre ich aus ihr zurück zur MainActivity ?

maksimilian
 
Hallo

Wie erzeuge ich die Aktivität und wie kehre ich aus ihr zurück zur MainActivity ?
Hast du nur in der MainAtivity das Lauyout getauscht oder hast du eine Neue Activity (andere Klasse und Datei) mit einen Intent aufgerufen?


Wenn du das Layout in der Acktivty tauscht hast (keine gute Programmierung) musst du wider alle Views im neuen Layout mit FindviewByID suchen und Listner erstellen, und auch nach dem Tausch zurück das gleiche wider.
 
Zuletzt bearbeitet:
Beim Klick auf den Menüeintrag wird mit einem "Intent" die neue Activity gestartet. In dieser kann per Click Listener die "finish()" Methode aufgerufen werden. Diese Methode beendet die neue Activity und kehrt zurück.

Aber Fragmente fände ich auch besser, da bleibt das Manifest übersichtlicher..
 
Danke, Euch beiden. Ich taste mich noch vor. Bisher habe ich nur das Layout getauscht. Es war mir klar, dass das nicht die Lösung ist.
Intent oder Fragment ? Wie sieht das in etwa aus ?
 
Zuletzt bearbeitet:
Ja, den Link hatte ich bereits gefunden und mit dessen Hilfe und dem eine Activity implementiert. Nun stelle ich fest, dass bei Start der Activity die onPause Methode der MainActivity aufgerufen wird. Da ich für diese noch keinen Code vorgesehen habe, stirbt die App. Wie soll in der onPause Methode der MainActivity reagiert werden ?
 
Eigentlich muss da gar kein Code rein, die App scheint aus einem anderen Grund zu sterben. Kannst ja mal das Log zeigen..
 
Hast du die Activity mit Hilfe der IDE AS erstellt und auch im Manifest hinzugefügt?
Wie das geht steht auch im link.

Wenn du die Methode überschreibtst musst du in ihr auch die Superklasse aufrufen.
Code:
Override

protected void onPause() {

    super.onPause();


}

Tipp wenn du die Methode mit Hilfe der IDE implementirst wird sie automatisch mit der der Superklasse erstellt.
 
Zuletzt bearbeitet:
Habe dein Text jetzt nochmal gelesen.
Du redest von der MainActivity richtig?
Du hast also die onPause in der MainActivity überschrieben?

Das brauchst du eigentlich gar nicht.

Wieso hast du die überschrieben?
 
Ich habe die Activity jetzt mal über AS erzeugt, und es funktioniert. Ist es notwendig, dass die Activity in einer eigenen Java-Datei steht ? Wenn ja, wie sieht es mit globalen Variablen aus ?
Beiträge automatisch zusammengeführt:

Die neue Activity erhält die Überschrift der MainActivity. Wie kann man das ändern ?
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Danke. Habe noch einiges (schwer untertrieben) zu lernen.
 
Code:
ActionBar actionBar = getSupportActionBar();
        if(actionBar != null)
        {         
            actionBar.setTitle("Activity 2");
        }
Beiträge automatisch zusammengeführt:

Meine Frage warum du onPause überschreibst hast du nicht beantwortet.
 
Zuletzt bearbeitet:
jogimuc schrieb:
Code:
ActionBar actionBar = getSupportActionBar();
        if(actionBar != null)
        {        
            actionBar.setTitle("Activity 2");
        }
Beiträge automatisch zusammengeführt:
Danke für den Tipp.
jogimuc schrieb:
Meine Frage warum du onPause überschreibst hast du nicht beantwortet.
Sorry! Ich habe zum Kennenlernen alle Methoden der MainActivity deklariert und mit einem Log-Eintrag versehen, so dass im Trace zu erkennen ist, wann eine Methode aufgerufen wird. Das ist der einzige Grund.
Den Einfluss von Bewegungen des Handys auf den Ablauf der App ignoriere ich noch bzw. jetzt den Einfluss weiterer Activities.
 
Ok wenn du die Methode overridest musst immer die Superklasse mit aufrufen.
Du musst einfach gesagt die Kontrolle an Android zurückgeben. Die Klasse von der du erbst. Das ist die Superklasse.
 
Ja, das mache ich auch.
 

Ähnliche Themen

Helmut1A
  • Helmut1A
Antworten
7
Aufrufe
1.230
Helmut1A
Helmut1A
J
Antworten
1
Aufrufe
129
swa00
swa00
N
  • no1Ltan
Antworten
5
Aufrufe
327
swa00
swa00
Zurück
Oben Unten