web-dev-qa-db-fra.com

Android: Retour à l'activité précédente

Je veux faire quelque chose de simple sur l'application Android. Comment est-il possible de revenir à une activité précédente. 

De quel code ai-je besoin pour revenir à l'activité précédente

459
Troj

Les activités Android sont stockées dans la pile d'activités. Revenir à une activité antérieure peut signifier deux choses.

  1. Vous avez ouvert la nouvelle activité à partir d'une autre activité avec startActivityForResult. Dans ce cas, vous pouvez simplement appeler la fonction finishActivity () à partir de votre code et cela vous ramènera à l'activité précédente.

  2. Gardez une trace de la pile d'activités. Chaque fois que vous démarrez une nouvelle activité avec une intention, vous pouvez spécifier un indicateur d'intention tel que FLAG_ACTIVITY_REORDER_TO_FRONT ou FLAG_ACTIVITY_PREVIOUS_IS_TOP. Vous pouvez l'utiliser pour mélanger les activités de votre application. Je ne les ai pas beaucoup utilisés cependant. Regardez les drapeaux ici: http://developer.Android.com/reference/Android/content/Intent.html

Comme mentionné dans les commentaires, si l'activité est ouverte avec startActivity(), vous pouvez la fermer avec finish(). Si vous souhaitez utiliser le bouton Haut, vous pouvez intercepter cette méthode dans onOptionsSelected(MenuItem item) en vérifiant l'ID de l'article par rapport à Android.R.id.home contrairement à R.id.home tel que mentionné. dans les commentaires.

443
Abhinav

Essayez Activity#finish() . C’est plus ou moins ce que le bouton Précédent fait par défaut.

213
adamp

Il suffit d'écrire sur click finish () . Cela vous mènera à l'activité précédente.

73
Umer Rana

Juste ça

super.onBackPressed();
64
AtanuCSE
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Cela vous mènera à une activité précédente en conservant sa pile et en supprimant toutes les activités suivantes de la pile.

Par exemple, si stack était A-> B-> C-> D et que vous démarrez B avec cet indicateur, stack sera A-> B

28
Dmitry Ryadnenko

Souhaitez-vous contrôler le comportement du bouton de retour? Vous pouvez remplacer le bouton Précédent (pour accéder à une activité spécifique) via l’une des deux méthodes suivantes.

Pour Android 1.6 et ci-dessous:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

Ou si vous ne supportez que Android 2.0 ou une version ultérieure:

@Override
public void onBackPressed() {
    // do something on back.
    return;
}

Pour plus d'informations: http://Android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

19
Bryan Denny

Il suffit d'appeler ces méthodes pour terminer l'activité en cours ou pour revenir en arrière par onBackPressed

finish();

OR

onBackPressed();
17
Akshay Paliwal

si vous voulez aller à vouloir aller à l'activité précédente, utilisez 

finish();

OR

onBackPressed();

si vous voulez aller à la deuxième activité ou en dessous, utilisez ce qui suit:

intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
12
Ram G.

Si vous avez correctement configuré le fichier AndroidManifest.xml avec l'activité principale, vous pouvez utiliser:

NavUtils.navigateUpFromSameTask(this);

Où est votre activité enfant.

11
Thomas Decaux

Ajoutez ceci dans votre méthode onCLick (), cela reviendra à votre activité précédente

terminer();

ou vous pouvez utiliser ceci. Cela a fonctionné parfaitement pour moi

 @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();

      if ( id == Android.R.id.home ) {
         finish();
         return true;
       }

  return super.onOptionsItemSelected(item);
  }
10
Darshuu

Vous pouvez appeler explicitement onBackPressed est le moyen le plus simple
Voir Retournez à l'activité précédente pour plus de détails 

7
Labeeb Panampullan

Commencez la deuxième activité en utilisant l'intention (utilisez startActivity ou startActivityForResult en fonction de vos besoins). Désormais, lorsque l'utilisateur appuiera sur le bouton Précédent, l'activité actuelle sera fermée et la précédente affichée. 

Maintenant, disons que vous avez deux activités, une pour sélectionner certains paramètres de l'utilisateur, tels que la langue, le pays, etc., et après l'avoir sélectionnée, l'utilisateur clique sur le bouton Suivant pour accéder au formulaire de connexion (par exemple). Désormais, si la connexion échoue, l’utilisateur sera actif, que se passera-t-il si la connexion aboutit? 

Si la connexion aboutit, vous devez démarrer une autre activité. Cela signifie qu'une troisième activité sera lancée et qu'il y a toujours deux activités en cours. Dans ce cas, il sera bon d'utiliser startActivityForResult. Une fois la connexion établie, renvoyez les données OK à la première activité et fermez-la. Maintenant, lorsque les données sont reçues, lancez la troisième activité et fermez la première en utilisant la commande finish. 

6
Altaf Hussain

Vous avez le même problème et 

finish();  OR super.onBackPressed();

a bien fonctionné pour moi, les deux ont fonctionné de la même manière, mais pas de chance avec return

6
NoNaMe

Vous pouvez essayer ceci:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
5
nikki

Essayez c'est agir car vous devez appuyer sur le bouton retour

finish();
onBackPressed();
5
Muhammed Fasil
@Override
public void onBackPressed() {
    super.onBackPressed();
}

et si vous voulez sur le bouton cliquez revenir en arrière alors simplement mettre 

bbsubmit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});
4
Md Hussain

Le comportement précédent/précédent de toutes les nouvelles activités/intentions est défini par défaut, sauf si vous avez codé une finish() sur l'activité d'appel.

4
ameyx

Je suggère la NavUtils.navigateUpFromSameTask (), c'est simple et très simple, vous pouvez l'apprendre à partir du développeur Google.

2
wuxue
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();

      if ( id == Android.R.id.home ) {
          finish();
          return true;
      }

      return super.onOptionsItemSelected(item);
 }

Essayez ceci fonctionne à la fois sur bouton retour de la barre d’outils comme bouton retour matériel .

2
Puni

Tout d’abord, gardez à l’esprit que si vous souhaitez revenir à une activité antérieure. Ensuite, n'appelez pas la méthode finish () lorsque vous passez à une autre activité en utilisant Intent.

Après cela, vous avez deux possibilités pour revenir d'une activité en cours à une activité précédente:

Appelez simplement: finish() sous l'écouteur de clic du bouton, ou ignorez la méthode suivante pour revenir en arrière à l'aide du bouton de retour du système:

@Override
public void onBackPressed() {
    super.onBackPressed();
}
0
Monir Zzaman

Il y a peu de cas pour revenir à votre activité précédente:

Cas 1: si vous voulez reprendre le résultat de votre activité précédente alors ActivityA.Java

 Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
               startActivityForResult(intent,2);

FBHelperActivity.Java

 Intent returnIntent = new Intent();
 setResult(RESULT_OK, returnIntent);
 finish();

Cas 2: ActivitéA -> FBHelperActivity ----> ActivitéA

ActivityA.Java

 Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
               startActivity(intent);

FBHelperActivity.Java

after getting of result call finish();
 By this way your second activity will finish and because 
 you did not call finish() in your first activity then
 automatic first activity is in back ground, will visible.
0

Essayez ceci dans, première activité

Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);

Dans votre deuxième activité

@Override
public void onBackPressed() {
    this.finish();
}
0
byteC0de

En plus de toutes les réponses mentionnées, cela reste un moyen alternatif de le faire, disons que vous avez deux classes, la classe A et la classe B.

Classe A, vous avez créé des activités telles que sélectionner des cases à cocher, imprimer des données et les appliquer à la classe B. essayez cette méthode alternative ou téléchargez le code source pour le démontrer.

http://whats-online.info/science-and-tutorials/125/Android-maintain-the-previous-of-activity-on-intent/

ou

http://developer.Android.com/reference/Android/content/Intent.html

0
Daniel Nyamasyo