Cambio entre la imagen de Android Navigation Drawer y Up caret cuando se utilizan fragmentos

Al usar el cajón de navegación, los desarrolladores de Android recomiendan que en la barra de acción "solo las pantallas que están representadas en el cajón de navegación deberían tener la imagen del cajón de navegación" y que "todas las demás pantallas tienen el carat tradicional".

Vea aquí para más detalles:http://youtu.be/F5COhlbpIbY

Estoy usando una actividad para controlar múltiples niveles de fragmentos y puedo obtener la imagen del cajón de navegación para mostrar y funcionar en todos los niveles.

Al crear fragmentos de nivel inferior puedo llamar alActionBarDrawerToggle setDrawerIndicatorEnabled(false) para ocultar la imagen del cajón de navegación y hacer que se muestre el cursor hacia arriba

LowerLevelFragment lowFrag = new LowerLevelFragment();

//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout, 
lowFrag, "lowerFrag").addToBackStack(null).commit();

El problema que tengo es que cuando vuelvo a los fragmentos de nivel superior, el quilate Arriba aún se muestra en lugar de la imagen original del cajón de navegación. ¿Alguna sugerencia sobre cómo "actualizar" la barra de acción en los fragmentos de nivel superior para volver a mostrar la imagen del cajón de navegación?

Solución

La sugerencia de Tom funcionó para mí. Esto es lo que hice:

Actividad principal

Esta actividad controla todos los fragmentos en la aplicación.

Al preparar nuevos fragmentos para reemplazar otros, establezco el DrawerTogglesetDrawerIndicatorEnabled(false) Me gusta esto:

LowerLevelFragment lowFrag = new LowerLevelFragment();

//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,   
lowFrag).addToBackStack(null).commit();

A continuación, en una anulación deonBackPressed, Revertí lo anterior configurando el DrawerToggle ensetDrawerIndicatorEnabled(true) Me gusta esto:

@Override
public void onBackPressed() {
    super.onBackPressed();
    // turn on the Navigation Drawer image; 
    // this is called in the LowerLevelFragments
    setDrawerIndicatorEnabled(true)
}
En el LowerLevelFragments

En los fragmentos modifiqué.onCreate yonOptionsItemSelected Me gusta esto:

EnonCreate adicionalsetHasOptionsMenu(true) para habilitar la configuración del menú de opciones. También establecersetDisplayHomeAsUpEnabled(true) para habilitar el< en la barra de acción:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // needed to indicate that the fragment would 
    // like to add items to the Options Menu        
    setHasOptionsMenu(true);    
    // update the actionbar to show the up carat/affordance 
    getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
}

Entonces enonOptionsItemSelected cuando el< se presiona se llama elonBackPressed() desde la actividad para subir un nivel en la jerarquía y visualizar la imagen del cajón de navegación:

@Override
public boolean onOptionsItemSelected(MenuItem item) {   
    // Get item selected and deal with it
    switch (item.getItemId()) {
        case android.R.id.home:
            //called when the up affordance/carat in actionbar is pressed
            getActivity().onBackPressed();
            return true;
        … 
    }

Respuestas a la pregunta(12)

Su respuesta a la pregunta