App beenden führt zur letzen Activity

  • Hi,


    immer wenn ich meine App beenden will erscheint die letzte geöffnete Activity.
    Ich habe in der MainActivity:

    Java
    public boolean onKeyDown (int keycode, KeyEvent event) {
            if(keycode == KeyEvent.KEYCODE_BACK) {
                MainActivity.this.finish();
            }
            return false;
        }



    genau das hier stehen, genauso wie in jeder anderen Activity auch und trotzdem schließt sich nicht die App sondern eine andere Activity öffnet sich.
    Ich habe es auch schon mit System.extit(0) versucht aber es passiert da genau das selbe.


    Kann mir jemand helfen?

    Zitat von androidKani


    Wer programmiert kann scheitern aber wer nicht programmiert der ist schon gescheitert!

  • Ich habe das mal fix nachgebaut - leider fehlen mir die Informationen bezüglich der Aufrufe deiner anderen Activites.


    Versuch's doch einfach mal anstelle von

    Java
    MainActivity.this.finish();


    mit

    Java
    finish();

    .


    Und in den anderen Activities solltest du auch nur das o.G. nutzen. Du beendest dadurch aber immer nur die Activity, nicht die gesamte Applikation.


    Java
    System.exit(0);


    Müsste das alles sofort beenden, hehe.


    Activities würde ich mit

    Java
    Intent intent = new Intent(DIESE_ACTIVITY.this, AUFZURUFENDE_ACTIVITY.class);
    // intent.putExtra("BEZEICHNUNG"", WERT);
    // würde u.U. Werte mitliefern, die du in der nächsten Activity benötigst.
    startActivityForResult(intent, 0);


    aufrufen.

  • Wenn Du mit einem Activity Stack arbeitest (also eine Activity die nächste aufruft und so weiter), dann beendet 'finish' nur die aktuelle Activity.
    Dementsprechend springst Du auf die vorige Activity zurück.


    Das ist gut so, das ist gewollt so, das entspricht den Navigatonsrichtlinien von Google Android.
    Zum kompletten Verlassen ist immer noch der Home Button da.


    Vergleiche die offizielle Dokumentation

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Genauso wie Leviathan es sagt öffnen und beende ich die Activitys.
    Ich habe es mit

    Java
    MainActivity.this.finish();


    und mit

    Java
    finish();

    versucht.


    Beides funktioniert genau so.


    Ich habe nun finish() in jede onStop() methode eingebracht. Nun klappt es zwar mit dem beenden der App. Das Problem ist aber nun, dass wenn zwischendurch die Bildschirmsperre eingeblendet wird, wird die App automtisch beendet wird. Was ja auch klar ist weil ich sie mit finish() beende. Aber wo müsste ich das finish() den sonst reinschreiben, damit die Activity beim verlassen beendet wird, aber bei Tastensperre oder eingehenden anrufen nicht beendet wird. Geht das überhaupt?
    Übrigens:

    Java
    System.exit(0);



    führt bei mir nicht zum beenden der app.

    Zitat von androidKani


    Wer programmiert kann scheitern aber wer nicht programmiert der ist schon gescheitert!

  • Ist es schlimm, wenn du uns zeigst, wie du die anderen Activities aufrufst - uns mehr oder minder "alles" zeigst?


    EDIT: Bei "System.exit(0);" hast du recht, das macht grob in etwa das Gleiche, wie "finish();" - es beendet einfach die momentane Activity und kehrt ggf. zurück.


    Wozu "überschreibst" du überhaupt "onKeyDown"?


    ULTRA-EDIT: http://codekicker.de/fragen/Android-App-beenden
    Hilft dir das? :)

  • KeyDown habe ich nur zu TestZwecken Überschrieben. Wollte nur sehen ob er die Activity sofort beendet ohne das ich mir erst einen Button basteln muss :)

    Main Activity wird so beendet und ruft so auf:


    @Ovverride
    public void onClick(View v) {


    switch(v.getId()) {
    case R.id.buttonExit:
    finish();
    break;
    case R.id.buttonWeiter:
    Intent weiter = new Intent(this, game.class);
    weiter.putExtra("text", savedText);
    startActivity(weiter);
    finish();
    break;
    }
    }


    Game Activity wird so beendet:


    @Override
    protected void onStop() {
    super.onStop();
    finish();
    }


    Sorry für die Code Darstellung aber manchmal erkennt der Editor hier nicht das Zeilenende nicht und würfelt alles durcheinander.



    Zitat von androidKani


    Wer programmiert kann scheitern aber wer nicht programmiert der ist schon gescheitert!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!