2010-11-23 13 views
1

Ich habe eine Schaltfläche, um meine App mit diesem Code zu schließen:Wie kann ich die Schaltfläche in meiner App schließen/beenden?

finish();

das Problem ist, dass diese Schaltfläche nicht Ausfahrt meiner App ... es einfach die aktuelle Absicht Ameise wieder die vorherigen Absicht schließt (Fenster) von meiner app ....

, wie ich tun kann, ein echter Ausgangs-/Schließknopf?

i mit diesem tryed:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

aber es funktioniert nicht funktioniert, weil, wenn ich in meine app zurückdrehen, kommt die App in dem letzten Fenster geöffnet, und nicht im ersten Fenster der App wie kann ich das machen? Ich brauche, dass, wenn ich meine App wieder öffne es auf dem ersten Fenster meiner App

+2

Tun Sie dies nicht tun. Wofür brauchst du deine App zu schließen? Dafür ist der Home-Button zuständig. – Falmarri

+0

Wenn Ihre App eine Schaltfläche zum Schließen hat oder benötigt, handelt es sich um eine schlecht gestaltete Android-App. – adamp

Antwort

1

Wenn Sie wirklich möchten, dass Ihre App stirbt. Sie können jede Absicht mit startActivityForResult() initiieren. dann vor jedem finish() setze das Ergebnis zurück. In jeder übergeordneten Aktivität können Sie onActivityResult() überschreiben, um zu testen, ob das empfangene Ergebnis bedeutet, dass die Anwendung beendet werden muss. Wenn ja, können Sie ein anderes Set-Ergebnis aufrufen und beenden(). Wiederholen Sie dies bei allen Aktivitäten und Sie werden feststellen, dass Ihre Anwendung vollständig beendet wird.

Übrigens schreibe ich dies aus dem Speicher. Funktionsnamen sind möglicherweise nicht exakt.

Hoffe, dass hilft.

p.s. Lesen Sie Ihre Anforderungen erneut. Sie können die Endschleife bei Ihrer ersten Aktivität stoppen.

+0

können Sie mir ein wenig mehr erklären, wie es geht? vielleicht mit Codebeispielen? Ich kann dich nicht verstehen – NullPointerException

+0

oh, es funktioniert, aber jetzt habe ich ein anderes Problem, wenn ich die BACK-Taste des Telefons drücken .. meine App schließt! Ich will das nicht, ich will das, wenn ich meine Rücktaste des Telefons drücke meine App geht nach hinten Absicht. Wie kann ich das lösen? – NullPointerException

+0

gelöst, ich muss Ergebnis 1, nicht Ergebnis 0 – NullPointerException

2

Standardmäßig Android-Design nicht bevorzugen, eine Anwendung zu beenden, sondern ermöglicht es dem Betriebssystem, es zu verwalten. Sie können die Home-Anwendung bringen, indem es entsprechende Absicht ist:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+1

es funktioniert nicht, denn wenn ich zurück in meine App, die App kommt im zuletzt geöffneten Fenster, und nicht im ersten Fenster der App, wie kann ich das tun? Ich brauche das, wenn ich meine App wieder öffne sie beginnt auf dem ersten Fenster meiner App – NullPointerException

0

finish() Aktivität schließen (das ist, was Sie Absicht nennen, aber es ist nicht korrekt), nicht Anwendung. Anwendung kann überhaupt nicht beendet werden (nur gewaltsam getötet wie Task Killer tun). Sie sollten Ihre activity stack so gestalten, dass sie Ihren Bedürfnissen entspricht. Vielleicht sollten Sie sich die Stapelumordnungsbeispiele in ApiDemos anschauen.

1

Ich würde es auf diese Weise tun:

  • Ich würde meine Anfangsaktivität (dh MainMenu) mit einem Startmodus von singleTop definieren
  • dann würde ich meine MainMenu von der Aktivität aufzurufen, die zu geht Schließen Sie die Anwendung.

    startActivity (neu Intent (this, MainMenu.class) .addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP) .putExtra ("Close", true);

  • Dann überschreiben die onNewIntent in der MainMenu-Aktivität; prüfen die zusätzliche boolean von „Close“, wenn der Wert wahr ist, dann tut ein Finish();

Haben sie versucht es nicht, aber ich denke, es sollte funktionieren.

0

Sie können dies versuchen: System.exit(0);

Verwandte Themen