Android remontant à la première activité sur le clic de bouton

J'écris une application où j'ai affaire à 4 activités, disons A, B, C & D. L'activité A invoque B, B invoque C, C invoque D. Sur chacune des activités, j'ai un bouton appelé "maison" bouton. Lorsque l'utilisateur clique sur le bouton d'accueil dans l'une des activités B, C, D, l'application devrait-elle revenir à l'écran d'activité A?

Comment simuler le bouton "maison" dans ce cas?

  • Android FragmentStatePagerAdapter, comment étiqueter un fragment pour le retrouver plus tard
  • Comment hacher une chaîne dans Android?
  • Exécuter l'application deux fois au travail
  • Pourquoi la balise viewport sur Galaxy Nexus / Android 4 ne fonctionne-t-elle pas?
  • ListView avec Alphabet sur Android
  • MapView affiche les détails de superposition en cliquant
  • 4 Solutions collect form web for “Android remontant à la première activité sur le clic de bouton”

    button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startActivity(new Intent(D.this, A.class)); } }); 

    Déclarez A dans votre manifeste avec l' android:launchMode="singleTask" . De cette façon, lorsque vous appelez startActivity() de vos autres activités, et A est déjà en cours d'exécution, il l'amènera simplement à l'avant. Sinon, il va lancer une nouvelle instance.

    Le seul problème que je vois en utilisant android:launchMode="singleTask" est chaque fois que vous minimisez l'application et démarrez l'application en appuyant de nouveau sur l'icône de l'application, puis l'application commence à partir de zéro et n'acquiert pas son état. Alors j'ai choisi d'utiliser

     intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP ); 

    Qui ne tiendra qu'une seule instance et effacera toutes les activités en plus de cela.

     Intent intent = new Intent( context, MyActivity.class ); intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP ); current_activity.startActivity( intent ); 

    Cela fonctionne pour moi

     Intent intent = new Intent(D.this, A.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 

    Dans le manifeste:

     android:name=".A" android:launchMode="singleTask" 

    J'utilise https://github.com/greenrobot/EventBus pour cela. Dans l'activité racine, vous devez vous abonner à l'événement

    EventBus.getDefault (). Inscrivez-vous (ceci);

    Ensuite, vous devez définir le rappel d'événement

      public void onEvent(LogoutEvent event) { // your implementation logout(); } 

    Et l'écouteur de bouton de connexion doit avoir un code comme celui-ci:

     finish(); // you must finish previous activity EventBus.getDefault().post(new LogoutEvent()); 

    C'est tout

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.