Cómo agregar el menú de opciones de barra de acciones en Fragmentos de Android
Estoy tratando de tener un menú de opciones en Android Fragments . ActionBar
menú de opciones de ActionBar
no se muestra en mis Fragmentos.
Aquí está mi código y tengo la función onCreateOptionsMenu()
y onOptionSelected()
. Mi código no muestra ningún error. Pero el menú de opciones no se muestra.
- La tecla programable del menú no se muestra en dispositivos Android Lollipop
- El menú Opciones no incluye los iconos
- ¿Cómo implemento el método onCreateOptionsMenu en un SherlockFragment?
- OnPrepareOptionsMenu no se llama
- Usando invalidateOptionsMenu () con el sistema de inicio de sesión (Android)
package org.reachout; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import org.general.R; public class ViewMessageFragment extends Fragment { /* (non-Javadoc) * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { // We have different layouts, and in one of them this // fragment's containing frame doesn't exist. The fragment // may still be created from its saved state, but there is // no reason to try to create its view hierarchy because it // won't be displayed. Note this is not needed -- we could // just run the code below, where we would create and return // the view hierarchy; it would just never be used. return null; } return (LinearLayout)inflater.inflate(R.layout.viewmessages_tab_fragment_layout, container, false); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.askexperts_menu, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // handle item selection switch (item.getItemId()) { case R.id.action_settings: // do s.th. return true; default: return super.onOptionsItemSelected(item); } } }
- El menú de opciones de onCreate no se muestra en android 3.1
- Hacer clic en icono de hamburguesa en la barra de herramientas no abre Cajón de navegación
- Android actionLayout no se muestra con la barra de herramientas
- OnCreateOptionsMenu antes de onCreate android
- OpcionesMenú de fragmentos en Viewpager mostrando los botones del otro
- NullPointerException en rotación durante el comando dispatchCreateOptionsMenu, la traza de pila no incluye ninguna función en mi aplicación
- Advertencia al cancelar el menú de desbordamiento de ActionBar en Android 4.1.x
- Android: java.lang.IllegalArgumentException: Tipo de elemento de carga útil no válido
Necesita llamar a setHasOptionsMenu(true)
en onCreate()
.
Para compatibilidad con versiones anteriores es mejor colocar esta llamada tan tarde como sea posible al final de onCreate()
o incluso más tarde en onActivityCreated()
o algo así.
Consulte: https://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu ( booleano)
Estoy tarde para la respuesta, pero creo que esta es otra solución que no se menciona aquí para la publicación.
Paso 1: Hacer un xml de menú que desea agregar como tengo que añadir una acción de filtro en mi barra de acción por lo que he creado un xml filter.xml . La línea principal para notar es android: orderInCategory esto mostrará el icono de acción al principio o último donde quiera mostrar. Una cosa más a anotar es el valor, si el valor es menor que se mostrará al principio y si el valor es mayor, entonces se mostrará al final.
Filter.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" > <item android:id="@+id/action_filter" android:title="@string/filter" android:orderInCategory="10" android:icon="@drawable/filter" app:showAsAction="ifRoom" /> </menu>
Paso 2: En onCreate () método de fragmento sólo tiene que poner la línea de abajo como se mencionó, que es responsable de llamar de nuevo onCreateOptionsMenu (Menu Menu, MenuInflater inflater) método igual que en una actividad .
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); }
Paso 3: Ahora agregue el método onCreateOptionsMenu que será reemplazado como:
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.filter, menu); // Use filter.xml from step 1 }
Paso 4: Ahora agrega un método onOptionsItemSelected mediante el cual puedes implementar la lógica que quieras hacer cuando seleccionas el icono de acción añadido de actionBar :
@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if(id == R.id.action_filter){ //Do whatever you want to do return true; } return super.onOptionsItemSelected(item); }
En AndroidManifest.xml set holo tema como este:
<activity android:name="your Fragment or activity" android:label="@string/xxxxxx" android:theme="@android:style/Theme.Holo" >
- Implementaciones de Emoji (Vista Emoticon) / Layouts de Teclado
- Cómo guardar la posición de desplazamiento de RecyclerView con RecyclerView.State?