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
Les activités Android sont stockées dans la pile d'activités. Revenir à une activité antérieure peut signifier deux choses.
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.
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.
Essayez Activity#finish()
. C’est plus ou moins ce que le bouton Précédent fait par défaut.
Il suffit d'écrire sur click finish () . Cela vous mènera à l'activité précédente.
Juste ça
super.onBackPressed();
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
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
Il suffit d'appeler ces méthodes pour terminer l'activité en cours ou pour revenir en arrière par onBackPressed
finish();
OR
onBackPressed();
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);
Si vous avez correctement configuré le fichier AndroidManifest.xml avec l'activité principale, vous pouvez utiliser:
NavUtils.navigateUpFromSameTask(this);
Où est votre activité enfant.
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);
}
Vous pouvez appeler explicitement onBackPressed
est le moyen le plus simple
Voir Retournez à l'activité précédente pour plus de détails
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.
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
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);
}
Essayez c'est agir car vous devez appuyer sur le bouton retour
finish();
onBackPressed();
@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();
}
});
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.
Je suggère la NavUtils.navigateUpFromSameTask (), c'est simple et très simple, vous pouvez l'apprendre à partir du développeur Google.
@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 .
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();
}
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.
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();
}
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.
ou
http://developer.Android.com/reference/Android/content/Intent.html