2017-01-18 1 views
2

Je souhaite ajouter un bouton de retour en tant que menu dans la partie gauche de la barre d'actions du fragment. Mais je ne veux pas que la flèche arrière soit mon icône.Bouton Précédent en tant que Menu dans le fragment

actionBar.setDisplayHomeAsUpEnabled (true);

La ligne de code ci-dessus donne le symbole de la flèche arrière. Au lieu de cela, je veux utiliser une image personnalisée. L'utilisation de cette image personnalisée devrait également revenir à son activité précédente.

+0

Utilisez-vous une barre d'outils? –

+0

Non. J'utilise la barre d'action – Rider

Répondre

0

Ajouter à votre thème dans styles.xml:

<item name="android:homeAsUpIndicator">@drawable/my_icon</item> 

Il remplacera l'icône par défaut. Par défaut, il utilise l'ID suivant:

android.R.id.home 

Vous pouvez utiliser cet identifiant pour revenir à votre activité précédente:

View homeView = getActionBar().getCustomView().findViewById(android.R.id.home); 
     homeView.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) 
      { 
       //Go back 
      } 
     }); 

ou

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     //Return back to your activity! 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Pour plus d'informations, consultez la documentation officielle à: https://developer.android.com/training/implementing-navigation/ancestral.html

+1

Merci. Ça a marché. :) Mais comment utiliser ce bouton pour revenir à l'activité précédente. – Rider

+0

Veuillez marquer la bonne réponse :) –

+0

Si vous définissez actionBar.setDisplayHomeAsUpEnabled (true), le fait de cliquer dessus vous ramènera à l'activité parente. –

1

J'ai ajouté quelque chose comme:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
     case android.R.id.home: 
      getActivity().onBackPressed(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 

} 

Cela a fonctionné pour moi.

+0

Oui ça va marcher! ... Voir ma mise à jour –

+0

@SuhaylSH J'ai voté. Mais en raison de moins de réputation, mon vote n'est pas visible. Si vous avez aimé ou trouvé que ma question était appropriée, veuillez adresser ma question. Merci. – Rider

+0

Vous n'avez pas besoin de la réputation de marquer la bonne réponse :) J'ai upvoted votre question .. –