icono - personalizar action bar android studio




¿Cómo puedo establecer la visibilidad de un elemento ActionBar en un fragmento diferente? (2)

Cuando quieras cambiar el fragmento necesitarás establecer un indicador que indique qué menú deseas inflar, entonces todo lo que tienes que hacer es llamar a invalidateOptionsMenu() en tu actividad para llamar nuevamente a onCreateOptonsMenu y usando tu onCreateOptonsMenu puedes configurarlo para inflar un menú diferente

Estoy buscando una manera de establecer la visibilidad de un elemento de MenuItem inflado en mi actividad principal dependiendo de en qué Fragment estoy.

Para información: estoy usando actionBarSherlock , zxing y algunos google services .

La aplicación fue construida con un cajón de navegación (con abs), también manipulo el FragmentStack de tal manera que cada vez que cambio a otro Fragmento cuando presiono el botón de volver, vuelvo en mi Main Fragment .

Aquí mi menú:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:id="@+id/button_generator" android:title="GENERER" android:icon="@drawable/ic_drawer"></item>
</menu>

Aquí es donde infló el menú:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    Log.d(TAG, "================= onCreateOptionsMenu ================= fragSt: " + fragmentStatus);
    this.getSherlock().getMenuInflater().inflate(R.menu.main, menu);

    mGenQrFromContacts = menu.findItem(R.id.button_generator);


    return true;
}

He intentado la solución aquí , pero no funciona en mi caso.


Deberías probar esto en tu Fragment :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // ...  
    // call the method setHasOptionsMenu, to have access to the menu from your fragment
    setHasOptionsMenu(true);

    //...
}

// the create options menu with a MenuInflater to have the menu from your fragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.findItem(R.id.button_generator).setVisible(true);
    super.onCreateOptionsMenu(menu, inflater);
}  

Y esto, en tu Activity :

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.my_layout, menu);
    menu.findItem(R.id.button_generator).setVisible(false);
    return true;
}

Espero que esto ayude.





menuitem