tutorial studio menus icono ejemplos desplegable create boton bar agregar android android-fragments android-toolbar

studio - menu android



Barra de herramientas de Android Agregar elementos de menĂº para diferentes fragmentos (7)

Tengo una barra de herramientas y un cajón de navegación. Cuando inicio mi aplicación, se crean la barra de herramientas y el cajón de navegación. Cuando hago clic en elementos en el cajón de navegación, comienza nuevos fragmentos y mantiene la misma barra de herramientas. ¿Cómo agrego básicamente elementos de menú a la barra de herramientas, como buscar, agregar, editar cuando inicio fragmentos específicos? No los quiero al inicio del programa, sino que se crean dinámicamente. Además, ¿cómo podría hacer clic en estos botones y hacer que inicien otros fragmentos? Lo quiero así, en un fragmento, el botón de edición en la barra de herramientas hace algo específico en comparación con el botón de edición en otro fragmento. ¡Gracias!

Menu_toolbar:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/edit" android:orderInCategory="1" android:title="Edit" app:showAsAction="always" android:icon="@drawable/pencil_icon"/> <item android:id="@+id/add" android:orderInCategory="1" android:title="Add" app:showAsAction="always" android:icon="@drawable/plus_icon"/>

Barra de herramientas:

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="55dp" android:background="#10a1ff" android:title="Home" />


A continuación se detallan los pasos para mostrar diferentes opciones de menú con diferentes fragmentos.

Paso 1: llame a setHasOptionsMenu (verdadero)

override fun onViewCreated(view: View, savedInstanceState: Bundle?) { setHasOptionsMenu(true) super.onViewCreated(view, savedInstanceState) }

Paso 2: Infle los elementos del menú de opciones relacionadas con su fragmento.

override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { // To clear previously added menu items menu?.clear() inflater?.inflate(R.menu.your_fragment_menu, menu) super.onCreateOptionsMenu(menu, inflater) }


Agregue código similar a sus fragmentos:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.library_fragment, parent, false); setHasOptionsMenu(true); return v; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.your_menu_xml, menu); super.onCreateOptionsMenu(menu, inflater); }

De esta manera, puede personalizar el menú para sus fragmentos.


Así es como se crea el menú dinámicamente: http://www.101apps.co.za/index.php/articles/using-toolbars-in-your-apps.html

Editado:

Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar); setSupportActionBar(actionBarToolBar); actionBarToolBar.setNavigationIcon(R.drawable.icon); actionBarToolBar.setNavigationContextDescription(getResources().getString(R.string.desc); actionBarToolBar.setLogo(R.drawable.other_icon); actionBarToolBar.setLogoDescription(getResources().getString(R.string.other_desc); actionBarToolBar.inflateMenu(R.menu.fragment_menu);


La mejor manera de hacerlo:

1. Busque la barra de herramientas en Actividad y configúrela como supportActionBar.

Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar); setSupportActionBar(actionBarToolBar);

2. Entonces será fácil manejar menús de opciones para diferentes fragmentos en una misma Actividad. Haz lo siguiente en cada fragmento como quieras:

En la llamada al método OnCreateView

setHasOptionsMenu(true);

Y por último,

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.main, menu); super.onCreateOptionsMenu(menu, inflater); }

Y para administrar los elementos del menú, haga clic en, tenemos OnOptionsItemSelected:

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_search : Log.i("item id ", item.getItemId() + ""); default: return super.onOptionsItemSelected(item); } }


Resolví estos problemas correctamente. Mi solución es el siguiente código:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment mRootView = inflater.inflate(R.layout.fragment_order_history, container, false); //getActivity().invalidateOptionsMenu(); setHasOptionsMenu(true); return mRootView; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.main, menu); super.onCreateOptionsMenu(menu, inflater); }


Tuve el mismo problema y quería reemplazar el menú de la barra de herramientas de acuerdo con el fragmento que se muestra.

El problema que estoy enfrentando ahora es que el menú se agrega al anterior.

Para mostrar solo el menú del fragmento, sugiero:

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); //Empty the old menu inflater.inflate(R.menu.menu_fragment1, menu); super.onCreateOptionsMenu(menu, inflater); }

Espero que ayude.


onCreateOptionsMenu método onCreateOptionsMenu en cada uno de sus fragmentos.

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.your_menu_xml, menu); super.onCreateOptionsMenu(menu, inflater); }