2012-04-26 18 views
12

estoy añadiendo elementos de menú utilizando el fragmento de onCreateOptionsMenu éxito ...Elementos del menú de fragmento de ActionBar. Poniéndolos delante

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

Este menú incluye adicional por encima de 1 elemento de menú. Lo que tengo que hacer es colocar este elemento de menú delante de todos los demás elementos existentes para que aparezca primero en la barra de acciones. Actualmente parece último.

(Este es un androide : showAsAction = "siempre" tema que estoy añadiendo)

He intentado añadir mediante programación, pero no hay ninguna opción en el objeto MenuItem para que pueda especificar icono y showAsAction banderas.

¿Alguien tiene alguna idea?

Respuesta

21

Ok Abrí esto mismo con un puntero en la dirección correcta desde EvilDuck. Y sí dymmeh ¡tienes razón, puedes hacer esto programáticamente!

Lo que necesitaba era utilizar una combinación de orderInCategory y menuCategory. Android parece ignorar orderInCategory si no tiene un menuCategory especificado.

  • que especifica la categoría de cada elemento de menú único en mi aplicación estableciendo el valor del atributo a menuCategory"system".
  • Mis elementos de menú de base (los que se cargan a través de la Activity) que tenía que establecer números altos orderInCategory, tales como 10, 11, 12, 13 etc.
  • Cuando entonces inflado y añadido el xml menú fragmento adicional con la misma categoría y un valor orderInCategory 1 apareció como el primer artículo.
+0

Utilicé para _back_ elementos del menú que están inflados por la actividad en sí misma la categoría ** 'secundaria' ** y ninguna categoría para los elementos _front_ de mis fragmentos. Funciona (probado con emuladores de 2.3.7 a 4.4). Pedido en propiedad de categoría no utilizada. – WebDucer

4

Intente utilizar "android: orderInCategory" atributo en los elementos de menú

+0

He intentado esto desafortunadamente no hizo la diferencia. –

+0

raro ... que me ayudó a reordenar elementos en ActionBar – EvilDuck

+0

Ver mi respuesta (abajo/arriba). Gracias por tu ayuda. –

4

no estoy seguro de dónde se van a dar que no se puede establecer la opción showAsAction o el icono de programación ejemplo:

public void onCreateOptionsMenu(Menu menu) 
{ 
    menu.add(Menu.NONE, /** group ID.. not really needed unless you're working with groups **/ 
       0,   /** this is the items ID (get this in onOptionsItemSelected to determine what was clicked) **/ 
       Menu.NONE, /** ORDER.. this is what you want to change **/ 
       "Cancel") /** title **/ 
       .setIcon(R.drawable.ic_menu_cancel) 
       .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
} 

Docs:

menu.add(int groupId, int itemId, int order, CharSequence title)

setShowAsAction(int actionEnum)

setIcon(int resId)

+0

¿te das cuenta de que depende de la versión de la API de destino, ¿verdad? – EvilDuck

+0

Sí. Está utilizando fragmentos + barra de acciones, lo que significa que está usando API 11+ o la biblioteca de compatibilidad para API 4+. Ambos tienen los métodos que he descrito – dymmeh

+0

Lo suficientemente justos, aunque la biblioteca de Compat tiene diferentes métodos de clase de utilidad para configurar showAsAction en los elementos del menú. – EvilDuck

0

Todo es correcto, solo use debajo de un código de línea en onCreateView.

setHasOptionsMenu(true); 
Cuestiones relacionadas