finish Befehl schließt nicht richtig die Activity

  • 9 Antworten
  • Letztes Antwortdatum
kukuk

kukuk

App-Anbieter (kostenlos)
37
Hallo alle zusammen, ich habe wieder ein Problem bei dem ich nicht weiter komme.

Ich öffne eine Activity mit:
Code:
        Intent intent = new Intent (this, UeberstundenActivity.class);
            startActivity(intent);
            
        finish();

auf diesem Formular habe ich einen Abbrechen Button der folgendes macht:
Code:
Intent intent = new Intent (this, MainActivity.class);
                startActivity(intent);
                finish();

Wenn ich jetzt wieder im MainActivity bin und dort sage
finish();
wird die Main Activity geschlossen und die Überstunden Activity wieder angezeigt. Also so als wenn die ÜberstundenActivity nicht richtig geschlossen wurde und noch offen ist.
Wenn ich System.exit(0) sage, schmiert meine APP ab, aber nur wenn ich vorher in der ÜberstundenActivity drin war. Und wie gesagt finish(); schließt nur die main und zeigt mir die ÜberstundenActivity wieder.
Ich weiß nicht mehr weiter.
Kann man denn irgendwie überprüfen?
If (UeberstundenActivity.visible = true) {
UeberstundenActivity.finish();
}
 
Der "Abbrechen" Button startet eine neue(!) MainActivity und legt die oben auf den Activitystack. Wenn du jetzt natürlich die MainActivity beendest/zurück drückst, wird diese wieder vom Stapel genommen und die darunter angezeigt.

Das finish nach startActivity ist mMn unnötig, da es eh nie aufgerufen wird
 
wüsste nicht, wieso ein finish nach startactivity nicht funktionieren sollte.

die methode hört ja net auf, wenn er startactivity aufruft. es wird ja trotzdem weiter alles abgearbeitet.


dein fehler müsste irgendwo anders sein. sehe hier so nach deiner beschreibung grade nichts. habs auch schon oft sowas gemacht
 
  • Danke
Reaktionen: kleinerkathe
Hab nachgelesen, habt natürlich recht ... startactivity läuft async ;) Also sollte die Activity eigtl. beendet werden.
 
Leider funktioniert es so nicht und ich habe mir was einfallen lassen.....

Intent intent = new Intent(getApplicationContext(), UeberstundenActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
finish();

in der Überstunden Activity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ueberstunden);


if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
}
 
So wird doch die UeberstundenActivity sofort wieder geschlossen, oder nicht?

Wenn ich das richtig interpretiere könnte startActivityForResult ja was für dich sein.
 
Sind wir wieder bei dem alten Thema, warum nutzt du überhaupt finish()?
Ich bin nachwievor der Meinung das die meisten finish( absolut unnötig sind).

Warum musst du die MainAcitivity beenden wenn du die überstunden activity aufrufst?
Vorallem weil du ein Abbrechen Button drin hast, der dann die main Acitivity wieder aufruft, dafür gibt es doch den "Back-Button" um wieder zurück zu kommen.

Warum programmierst du so am Android Design vorbei?
Warum nicht einfach die Überstunden activity aufrufen und falls du dort extra einen Abbrechen-Button haben möchtest statt aufwending ein intent zu starten einfach die normale Back-Funktion zu nutzen.

Alles was sich da evtl auf der MainActivity ändern muss, nachdem die andere Acitivity aufgerufen wurde kannst man wunderbar mit den Lifecycle Methoden umsetzen.
 
Hallo,

google doch mal nach der Methode onBackPressed.
 
Das steht ja in der onbackpressed procedure drin, damit wird die Überstunden aktivity auch wirklich geschlossen!!!! Mit allem anderen bekommen ich die nicht geschlossen
Code:
Intent intent = new Intent(getApplicationContext(), UeberstundenActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
finish();
 
Nochmal meine Frage:
WARUM willst du sie schließen?

Eigentlich brauchst du dich um das was dein Problem hier darstellt gar nicht kümmern.
Du rufst die ÜberstundenActivitiy auf machst da deine sachen drückst den backbutton und bist wieder da wo du hergekommen ist (MainActivity).

Eigentlich brauchst du da gar nichts machen.
Deshalb meine Frage warum du sie schließen willst, weil je nachdem was der Grund ist, gibt es vielleicht bessere und einfachere Lösungen.
 
Zurück
Oben Unten