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:
Pour désactiver et masquer le "Hamburger" de DrawerToggle, il suffit d'appeler
mDrawerToggle.setDrawerIndicatorEnabled(false);
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);
}
}