Question

J'ai une application qui fait le tour de l'activité principale (un menu principal). Dans l'application, il existe un élément de menu d'option qui dirige cette activité.

Au début, j'ai toujours commencé une nouvelle activité principale lorsque cet élément a été sélectionné. En utilisant le bundle d'intention, j'ai dit à l'activité principale que certaines initialisations que je fais sur un nouveau départ n'étaient pas nécessaires.

Cependant, je n'ai pas tout à fait aimé le comportement global. Je suis tombé sur android:launchMode="SingleTask" Et cela semblait aider: maintenant je ne recrée pas mon activité de menu principale tout le temps; De plus, si j'appuie sur le bouton "arrière", je reviens directement sur l'écran d'accueil. Cela ressemble très bien à un menu "principal" approprié.

Mon problème est maintenant le suivant: si j'exécute une autre activité de mon application, appuyez sur le bouton d'accueil, puis rouvrez mon application (par exemple, en utilisant "Last Apps"), alors je ne reviens pas à la dernière activité, mais à la principale. L'autre activité est détruite.

Toutes les idées sur la façon de mettre en œuvre le comportement de SingleTask Sans seulement pouvoir revenir à une seule activité?

Était-ce utile?

La solution

Si vos autres activités sont déclarées normalement avec des défauts d'activité dans Android, alors retourner à votre application devrait vous amener à la même activité où vous vous êtes arrêté (en utilisant le bouton Home Home)

Cependant, n'oubliez pas que le système Android tue des applications lorsqu'elle nécessite des ressources système. Votre application a donc été tuée lorsque vous êtes allé à l'autre application. Ensuite, lorsque vous revenez à votre application, l'activité de lanceur par défaut sera redémarrée, qui est votre activité de menu.

Pour revenir à l'activité principale de toute activité, faites-le:

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);
    }

Cela effacera la pile d'activités et vous ramènera à votre activité principale. Comme vous l'avez déclaré singletop, cela apportera l'activité principale existante au premier plan. Le drapeau intention.flag_activity_clear_top supprimera toutes les activités dans la pile au-dessus de l'activité principale. (Je suppose que vous êtes dans la même application).

Maintenant, toutes vos autres activités doivent seulement inclure un bouton dont l'écoute de clics invoque la méthode goHome();

À partir de votre activité principale, si vous appuyez sur le bouton matériel arrière, il devrait quitter votre application.

Autres conseils

Pourquoi ne pas appeler Fination () sur les activités créées par l'activité principale? De cette façon, vous revenez à l'activité principale, sans en créer une nouvelle ...

Je pense que vous devriez sauver l'état de votre activité avant de démarrer une autre activité, puis reprendre votre activité chaque fois que vous revenez sur la dernière activité. Voir le cycle de vie de l'activité d'Androidhttp://developer.android.com/guide/topics/fundamentals/activities.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top