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

je veux faire quelque chose de simple sur android app. Comment est-il possible de revenir à une ancienne activité.

Quel code dois-je retourner à l'activité précédente

443
demandé sur Swati Garg 2010-10-28 03:13:54

22 réponses

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é d'une autre activité avec startActivityForResult . Dans ce cas, vous pouvez simplement appeler la fonction finishActivity() de votre code et cela vous ramènera à l'activité précédente.

  2. garder le suivi de l'activité de la pile. Chaque fois que vous commencez une nouvelle activité avec une intention, Vous pouvez spécifier un drapeau d'intention comme FLAG_ACTIVITY_REORDER_TO_FRONT ou FLAG_ACTIVITY_PREVIOUS_IS_TOP . Vous pouvez l'utiliser pour commuter entre les activités de votre application. Je ne les ai pas beaucoup utilisés. 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() alors on peut la fermer avec finish() . Si vous souhaitez utiliser le bouton Up, vous pouvez attraper cela dans onOptionsSelected(MenuItem item) méthode avec la vérification de L'élément ID contre android.R.id.home contrairement à R.id.home comme mentionné dans les commentaires.

428
répondu Abhinav 2017-08-25 19:15:29

Essayer Activity#finish() . C'est plus ou moins ce que le bouton de retour fait par défaut.

206
répondu adamp 2010-10-27 23:47:40

il suffit d'écrire sur le clic finition () . Il vous mènera à l'activité précédente.

68
répondu Umer Rana 2014-01-16 09:51:14

Juste

super.onBackPressed();
62
répondu AtanuCSE 2012-01-18 06:55:57
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

cela vous mènera à une activité antérieure de garder sa pile et de nettoyer toutes les activités après elle de la pile.

par exemple, si stack était A - >B->C->D et que vous démarrez B avec ce drapeau, stack sera a - >b

28
répondu Dmitry Ryadnenko 2014-07-22 12:41:56

voulez-vous prendre le contrôle du comportement du bouton arrière? Vous pouvez remplacer le bouton Précédent (pour passer à une activité spécifique) par l'une des deux méthodes suivantes.

pour Android 1.6 et inférieur:

@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 Android 2.0 ou plus:

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

pour plus de détails: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

19
répondu Bryan Denny 2010-10-27 23:41:27

il suffit d'appeler cette méthode pour terminer l'activité actuelle ou de revenir par onBackPressed

finish();

ou

onBackPressed();
16
répondu Akshay Paliwal 2015-02-04 09:32:50

si vous avez configuré correctement L'AndroidManifest.fichier xml avec activity parent, vous pouvez utiliser:

NavUtils.navigateUpFromSameTask(this);

où il s'agit de l'activité de votre enfant.

10
répondu Thomas Decaux 2013-11-27 12:23:19

si vous voulez aller à la juste envie d'aller de l'activité précédente utilisation

finish();

ou

onBackPressed();

si vous souhaitez accéder à la deuxième activité ou à une activité inférieure, utilisez la mention suivante:

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);
10
répondu Ram G. 2015-06-30 21:27:43

ajoutez ceci dans votre méthode onCLick (), il va revenir à votre activité précédente

finition ();

ou vous pouvez utiliser ceci. Il 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);
  }
8
répondu Darshuu 2017-09-21 05:28:46

vous pouvez explicitement appeler onBackPressed est la manière la plus facile

Voir retourner à l'activité précédente pour plus de détails

6
répondu Labeeb Panampullan 2011-04-13 15:16:54

commencez la deuxième activité en utilisant l'intention (utilisez startActivity ou startActivityForResult selon vos exigences). Maintenant, lorsque l'utilisateur presse le bouton retour, l'activité en cours sur le dessus sera fermé et la précédente sera affichée.

permet maintenant de dire que vous avez deux activités, une pour sélectionner certains paramètres pour l'utilisateur, comme la langue, le pays, etc, et après avoir sélectionné, l'utilisateur clique sur le bouton Suivant pour aller au formulaire de connexion (par exemple) . Maintenant, si la connexion est échoue, alors l'utilisateur aura sur l'activité de connexion, que si la connexion est réussie ?

Si la connexion est réussie, alors vous devez commencer une autre activité. Cela signifie qu'une troisième activité sera lancée, et il y a toujours deux activités en cours. Dans ce cas, il sera bon d'utiliser startActivityForResult . Lorsque la connexion est réussie, envoyer les données OK de nouveau à la première activité et fermer l'activité de connexion. Lorsque les données sont reçues, commencez la troisième activité et fermez la première. en utilisant terminer.

5
répondu Altaf Hussain 2015-08-05 18:11:02

a eu le même problème et

finish();  OR super.onBackPressed();

a bien fonctionné pour moi, les deux ont bien fonctionné, mais pas de chance avec return

5
répondu NoNaMe 2018-01-30 04:24:35

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);
}
4
répondu nikki 2012-08-31 10:16:29
@Override
public void onBackPressed() {
    super.onBackPressed();
}

et si vous voulez sur le bouton cliquez revenir en arrière puis il suffit de mettre

bbsubmit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});
4
répondu Md Hussain 2015-04-25 20:12:26

l'Essayer c'est l'acte que vous avez appuyez sur le bouton retour bouton

finish();
onBackPressed();
4
répondu Muhammed Fasil 2016-08-08 15:49:15

toutes les nouvelles activités / intentions par défaut ont un comportement back/previous, sauf si vous avez codé un finish() sur l'activité appelant.

3
répondu ameyx 2013-04-07 17:38:41

je suggère les NavUtils.navigateUpFromSameTask (), c'est facile et très simple, vous pouvez l'apprendre du développeur google.Souhaite que je pourrais vous aider!

1
répondu wuxue 2015-10-10 14:26:05

outre toutes les réponses mentionnées, leur est encore une façon alternative de le faire, disons que vous avez deux classes, Classe A et classe B.

Classe A vous avez fait des activités comme cocher la case select, imprimer des données et l'intention de la classe B. Classe B, vous souhaitez passer plusieurs valeurs à la classe A et maintenir l'état précédent de la classe A, vous pouvez utiliser, essayer cette méthode alternative ou télécharger le code source pour démontrer ce

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

ou

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

0
répondu Daniel Nyamasyo 2017-01-30 05:24:25
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();

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

      return super.onOptionsItemSelected(item);
 }

Essayez cela, il travaille à la fois sur de la barre d'outils bouton de retour comme bouton de retour .

0
répondu Puni 2017-07-30 14:23:49

essayez ceci en, première activité 151930920"

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

dans votre deuxième activité

@Override
public void onBackPressed() {
    this.finish();
}
0
répondu byteC0de 2017-08-30 09:20:36

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

Case 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: ActivityA -- > FBHelperActivity - - - >ActivityA

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
répondu Gyan Swaroop Awasthi 2018-07-30 13:45:39