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
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
Réponses:
Les activités Android sont stockées dans la pile d'activités. Revenir à une activité précédente pourrait 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 comme FLAG_ACTIVITY_REORDER_TO_FRONT
ou FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Vous pouvez l'utiliser pour basculer entre les activités de votre application. Je ne les ai cependant pas beaucoup utilisés. Jetez un œil aux 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 Haut, vous pouvez attraper cela en onOptionsSelected(MenuItem item)
vérifiant l'ID de l'article android.R.id.home
contrairement R.id.home
à ce qui est mentionné dans les commentaires.
Essayez Activity#finish()
. C'est plus ou moins ce que fait le bouton de retour par défaut.
this.finish();
#
est un indicateur qui finish()
est une méthode non statique de la classe Activity. Ce n'est pas du Java valide, mais cela aide à expliquer comment utiliser la méthode.
.
, c'est-à-dire:Activity.someStaticMethod()
Il suffit d'écrire à la fin du clic () . Cela vous amènera à l'activité précédente.
Juste ça
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Cela vous amènera à une activité précédente en gardant sa pile et en supprimant toutes les activités qui la suivent de la pile.
Par exemple, si la pile était A-> B-> C-> D et que vous démarrez B avec cet indicateur, la pile sera A-> B
Voulez-vous prendre le contrôle du comportement du bouton de retour? Vous pouvez remplacer le bouton de retour (pour accéder à une activité spécifique) via l'une des deux méthodes.
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 qu'Android 2.0 ou supérieur:
@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
Appelez simplement ces méthodes pour terminer l'activité en cours ou pour revenir en arrière par onBackPressed
finish();
OU
onBackPressed();
si vous voulez aller juste pour aller à l'activité précédente, utilisez
finish();
OU
onBackPressed();
si vous voulez passer à 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);
Ajoutez ceci dans votre méthode onCLick (), cela reviendra à votre activité précédente
terminer();
ou Vous pouvez l'utiliser. Cela a parfaitement fonctionné 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);
}
Si vous avez correctement configuré le fichier AndroidManifest.xml avec l'activité parent, vous pouvez utiliser:
NavUtils.navigateUpFromSameTask(this);
Où c'est votre activité enfant.
Essayez ceci est agir comme vous devez appuyer sur le bouton de retour
finish();
onBackPressed();
Vous pouvez explicitement appeler onBackPressed
est le moyen le plus simple.
Reportez- vous à l'activité précédente pour plus de détails.
Commencez la deuxième activité en utilisant l'intention (soit utiliser startActivity
ou startActivityForResult
selon vos besoins). Maintenant, lorsque l'utilisateur appuie sur le bouton de retour, l'activité actuelle en haut sera fermée et la précédente sera affichée.
Supposons maintenant que vous ayez deux activités, l'une pour sélectionner certains paramètres pour l'utilisateur, comme la langue, le pays, etc., et après l'avoir sélectionné, l'utilisateur clique sur le bouton Suivant pour accéder au formulaire de connexion (par exemple). Maintenant, si la connexion échoue, alors l'utilisateur sera sur l'activité de connexion, que se passe-t-il si la connexion réussit?
Si la connexion réussit, vous devez alors 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 de l'utiliser startActivityForResult
. Une fois la connexion réussie, renvoyez les données OK à la première activité et fermez l'activité de connexion. Maintenant, lorsque les données sont reçues, démarrez la troisième activité et fermez la première activité en utilisant terminer.
@Override
public void onBackPressed() {
super.onBackPressed();
}
et si vous voulez cliquer sur le bouton revenir en arrière, simplement mettre
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
@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 fonctionne aussi bien sur le bouton de retour de la barre d' outils que sur le bouton de retour du matériel .
Il y a peu de cas pour revenir à votre activité précédente:
Cas 1: si vous voulez ramener le résultat à 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.
Après cela, vous avez deux façons de revenir de l'activité en cours à l'activité précédente:
Appelez simplement: finish()
sous l'écouteur de clic de bouton, ou remplacez la méthode suivante pour sauvegarder en utilisant le bouton de retour du système:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Outre toutes les réponses mentionnées, leur est toujours une façon alternative de le faire, disons que vous avez deux classes, la classe A et la classe B.
Classe A, vous avez sélectionné certaines activités comme la case à cocher, imprimé certaines données et l'intention de la classe B. Classe B, vous souhaitez transmettre plusieurs valeurs à la classe A et conserver l'état précédent de la classe A, vous pouvez utiliser, essayez cette alternative ou téléchargez le code source pour le démontrer
ou
http://developer.android.com/reference/android/content/Intent.html
Essayez-le, 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();
}