comment remplacer le bouton retour de la barre d’action dans Android?

voici ma requête Je veux personnaliser le bouton retour de l’activité dans la barre d’action pas dans le bouton de retour de la clé matérielle? J’ai remplacé la méthode onBackPressed (), elle fonctionne avec le bouton de retour de mon émulateur et non

avec le bouton retour de la barre d’action.

Je veux que cela se produise avec la barre d’action? Comment puis-je faire ceci? Voici mon code

@Override public void onBackPressed() { Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); return; } 

J’ai utilisé ce toast pour savoir si le back press fonctionne ou non, mais les changements d’implémentation actuels reviennent à l’activité précédente. mais cela ne fonctionne pas avec le bouton présent dans la barre Top of Action (outre le titre de l’activité).

S’il vous plaît n’importe qui pourrait me spécifier le problème.

Je pense que vous voulez remplacer l’opération de clic du bouton d’accueil. Vous pouvez remplacer cette fonctionnalité comme celle-ci dans votre activité.

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); break; } return true; } 

Si vous souhaitez que le bouton ActionBar se comporte de la même manière que le bouton retour du matériel:

  @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return false; } 

Deux choses à garder à l’esprit: l’utilisateur peut soit appuyer sur le bouton retour, soit appuyer sur le bouton d’accueil de la barre d’action.
Donc, si vous voulez le redirect vers la même destination, vous pouvez le faire.

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return false; } @Override public void onBackPressed() { super.onBackPressed(); Intent intent = new Intent(CurrentActivity.this, NextActivity.class); startActivity(intent); finish(); } 

Cela amène l’utilisateur à l’intention d’appuyer sur la touche ou sur le bouton de la barre d’action.

  @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } return true; } 

Si vous souhaitez revenir à l’ instance précédente d’une activité en appuyant sur le bouton Accueil d’ActionBar, sans le recréer , vous pouvez remplacer la méthode getParentActivityIntent pour utiliser celle de la stack arrière:

 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public Intent getParentActivityIntent() { return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); } 

MODIFIER:
Vous pouvez également obtenir le même résultat en
définir le lancement de votre activité parent sur singleTop.
android:launchMode="singleTop" donc android:launchMode="singleTop" sur l’activité parent dans votre manifeste.
Ou vous pouvez utiliser l’indicateur FLAG_ACTIVITY_CLEAR_TOP avec l’intention UP.
reference: Assurer la navigation

Je l’ai réalisé en utilisant simplement deux étapes,

Étape 1: Accédez à AndroidManifest.xml et ajoutez le paramètre dans la balise – android: parentActivityName = “. Home.HomeActivity”

Exemple :

   

Étape 2: dans ActivityDetail ajoutez votre action pour la page / activité précédente

Exemple :

  @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } 

Désolé le mien est une réponse tardive, mais pour toute autre personne arrivant à cette page avec la même question, j’avais essayé ce qui suit:

 @Override public boolean onOptionsItemSelected(MenuItem item) { ... if (item.getItemId() == android.R.id.home) { .... } .... } 

mais cela n’a pas réussi à attraper le bouton “Retour”.

Finalement, j’ai trouvé une méthode qui a fonctionné pour moi sur https://stackoverflow.com/a/37185334/3697478 qui consiste à remplacer “onSupportNavigateUp ()” comme j’utilise la barre d’action de la bibliothèque de support “AppCompatActivity”. (Il existe un équivalent “onNavigateUp ()” pour la nouvelle bibliothèque de barre d’action / barre d’outils.)

 @Override public boolean onSupportNavigateUp(){ finish(); return true; } 

et j’ai supprimé la section “android: parentActivityName =”. MainActivity “du fichier manifeste.

 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } //noinspection SimplifiableIfStatement if (id == R.id.signIn) { return true; } return super.onOptionsItemSelected(item); } /////////////////// @Override public void onBackPressed() { super.onBackPressed(); finish(); } 

Il existe plusieurs manières de configurer le bouton dans la barre:

1) méthode .setDisplayHomeAsUpEnabled(true); le fera, et alors vous pouvez simplement remplacer android.R.id.home

2) append dans Android Manifest, mais dans ce cas, vous ne pouvez pas remplacer android.R.id.home dans OnOptionsMenuSelected.

.. pour ceux qui se demandent pourquoi cela ne marche pas pour eux …