Frage

Ich habe eine App, die sich um die Hauptaktivität (ein Hauptmenü) dreht.In jeder anderen App gibt es einen Optionsmenüpunkt, der auf diese Aktivität verweist.

Zuerst habe ich immer eine neue Hauptaktivität gestartet, wenn dieser Punkt ausgewählt wurde.Mit dem Intent-Bundle habe ich der Hauptaktivität mitgeteilt, dass einige Initialisierungen, die ich bei einem Neuanfang durchführe, nicht notwendig waren.

Allerdings gefiel mir das Gesamtverhalten nicht ganz.Ich bin darüber gestolpert android:launchMode="SingleTask" und das schien zu helfen:Jetzt erstelle ich meine Hauptmenüaktivität nicht mehr ständig neu.Wenn ich außerdem die „Zurück“-Taste drücke, komme ich direkt zum Startbildschirm zurück.Das fühlt sich ganz gut an wie ein richtiges „Hauptmenü“.

Mein Problem ist jetzt folgendes:Wenn ich eine andere Aktivität meiner App ausführe, drücke ich die Home-Taste und öffne dann meine App erneut (z. B.Wenn ich „Letzte Apps“ verwende, gehe ich nicht zur letzten Aktivität zurück, sondern zur Hauptaktivität.Die andere Aktivität wird zerstört.

Irgendwelche Ideen, wie ich das Verhalten von umsetzen kann SingleTask ohne nur zu einer Aktivität zurückkehren zu können?

War es hilfreich?

Lösung

Wenn Ihre anderen Aktivitäten in Android normal mit Aktivitätsstandardwerten deklariert sind, sollten Sie durch die Rückkehr zu Ihrer App zu derselben Aktivität zurückkehren, bei der Sie aufgehört haben (mithilfe der Hardware-Home-Taste).

Bedenken Sie jedoch, dass das Android-System Anwendungen beendet, wenn es Systemressourcen benötigt.Daher wurde Ihre App möglicherweise beendet, als Sie zu der anderen Anwendung wechselten.Wenn Sie dann zu Ihrer App zurückkehren, wird die standardmäßige Launcher-Aktivität neu gestartet, also Ihre Menüaktivität.

Gehen Sie wie folgt vor, um von einer beliebigen Aktivität zur Hauptaktivität zurückzukehren:

public static void goHome(Context context) {
        final Intent intent = new Intent(context, HomeActivity.class); //give name of your main activity class here
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
    }

Dadurch wird der Aktivitätsstapel geleert und Sie kehren zu Ihrer Hauptaktivität zurück.Wenn Sie singleTop deklariert haben, wird die vorhandene Hauptaktivität in den Vordergrund gerückt.Das Flag Intent.FLAG_ACTIVITY_CLEAR_TOP entfernt alle Aktivitäten im Stapel über der Hauptaktivität.(Ich gehe davon aus, dass Sie sich in derselben Anwendung befinden).

Jetzt müssen alle Ihre anderen Aktivitäten nur noch eine Schaltfläche enthalten, deren Klick-Listener die Methode aufruft goHome();

Wenn Sie bei Ihrer Hauptaktivität die Hardware-Zurück-Taste drücken, sollte Ihre App beendet werden.

Andere Tipps

Warum nicht Finish() für die Aktivitäten aufrufen, die von der Hauptaktivität erstellt wurden?Auf diese Weise kehren Sie zur Hauptaktivität zurück, ohne eine neue zu erstellen ...

Ich denke, Sie sollten den Status Ihrer Aktivität speichern, bevor Sie eine andere Aktivität starten, und Ihre Aktivität dann fortsetzen, wenn Sie zur letzten Aktivität zurückkehren.siehe Aktivitätslebenszyklus von Androidhttp://developer.android.com/guide/topics/fundamentals/activities.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top