web-dev-qa-db-fra.com

Changer l'icône du tiroir en flèche arrière

J'utilise le nouveau DrawerLayout pour avoir une navigation latérale. J'utilise l'icône du tiroir (le "hamburger") comme ceci:

@Override
protected void onStart() {
    super.onStart();

    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this, 
            mDrawerLayout, 
            R.drawable.ic_navigation_drawer, 
            R.string.app_name, 
            R.string.app_name);
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
}

Cependant, lorsque j'ajoute un Fragment au backstack, je souhaite afficher à nouveau la flèche de retour, afin que l'utilisateur puisse revenir à "home", puis seulement ouvrir le tiroir de l'application.

Comment puis-je réinitialiser l'icône du tiroir sur l'icône arrière?
La flèche que je veux:

Navigation Drawer

43
nhaarman

Pour désactiver et masquer le "Hamburger" de DrawerToggle, il suffit d'appeler

mDrawerToggle.setDrawerIndicatorEnabled(false);
72
Nipper

J'ai créé une interface pour l'activité d'hébergement pour mettre à jour l'état d'affichage du menu hamburger. Pour les fragments de niveau supérieur, j'ai défini la bascule sur true et pour les fragments pour lesquels je souhaite afficher la flèche vers le haut <, j'ai mis la bascule sur false.

public class SomeFragment extends Fragment {

    public interface OnFragmentInteractionListener {
        public void showDrawerToggle(boolean showDrawerToggle);
    }

    private OnFragmentInteractionListener mListener;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            this.mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        mListener.showDrawerToggle(false);
    }
}

Puis dans mon activité ...

public class MainActivity extends Activity implements SomeFragment.OnFragmentInteractionListener {

    private ActionBarDrawerToggle mDrawerToggle;

    public void showDrawerToggle(boolean showDrawerIndicator) {
        mDrawerToggle.setDrawerIndicatorEnabled(showDrawerIndicator);
    }

}
2
Bill Mote