studio personalizar icono fragments editar con boton bar agregar activity actionbar android android-fragments actionbarsherlock menuitem

android - personalizar - ¿Cómo puedo establecer la visibilidad de un elemento ActionBar en un fragmento diferente?



navigation drawer con fragments android studio (3)

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.


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


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.


Encontré un truco, tal vez quieras probar esto.

public void displayMenu(boolean show) { setHasOptionsMenu(show); getActivity().invalidateOptionsMenu(); }