PDA

Ver la Versión Completa : [ CONSULTA ] Ejecutar mediante programacion un menu


EdRivera
25/10/14, 06:06:35
Hola a todos tengo un menu personal en un Action Bar de un Fragment y quiero que cuando se precione el boton fisico menu del celular se muestre el menu que he creado

lo que tengo es lo siguiemte:

El fragment_menu.xml es donde tengo formado el menu



En el Fragment.java creo el menu asi


public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

inflater.inflate(R.menu.fragment_menu, menu);

}Y en el MainActivity.java tenco el evento


public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_MENU) {
//Necesito poner aqui el codigo para mostrar el menu
}

return super.onKeyDown(keyCode, event);
}El asunto es ¿como pongo el codigo en onKeyDown del MainActivity que me permita mostrar el menu que fue creado en el Fragment.java?


Muchas gracias de antemano con la ayuda

rafaxplayer
25/10/14, 08:27:25
Haber en Activity hay un método "openOptionsMenu()" si lo tuyo es un fragment seria algo asi.

getactivity().openOptionsMenu();

Si no, con el método ya estaría.

androizado
25/10/14, 14:07:49
Creo que estás utilizando un fragment verdad?, te recomiendo lo que rafaxplayer te comenta, utiliza getActivity() si estás trabajando con fragment. Esto te servirá para obtener la matriz de la Actividad padre donde el fragment se está mostrando.

EdRivera
25/10/14, 20:51:49
Muchas gracias por la ayuda, la aprecio mucho con lo que me han dicho he hecho dos pruebas mediante un botón en dos Fragment.

En el primer Fragment puse un menú de opciones que son los 3 puntitos que aparece en la barra de actividad en el lado derecho y con el código que me diste lo puse en el botón y si me lo mostró, aquí dejo el código que funciono.

El menú esta de esta forma

<menu xmlns:android=aqui va un url>
<item
android:id="+id/menu_add"
android:showAsAction="collapseActionView"
android:title="Agregar"/>
<item
android:id="+id/menu_del"
android:showAsAction="collapseActionView"
android:title="Borrar"/>
<item
android:id="+id/menu_mod"
android:showAsAction="collapseActionView"
android:title="Modificar"/>
<item
android:id="+id/menu_import"
android:showAsAction="collapseActionView"
android:title="Importar"/>
</menu>
Este es el código en el botón para mostrar el menú y funciona bien

Button btn1 = (Button)rootView.findViewById(R.id.button);
btn1.setOnClickListener(new View.OnClickListener() {
Override
public void onClick(View view) {
//con esto se muestra el menu
((MainActivity) getActivity()).openOptionsMenu();
}
});
En el otro Fragnment puse un menú personalizado como el siguiente

<!-- More -->
<item
android:id="+id/a_More"
android:menuCategory="system"
android:orderInCategory="100"
android:icon="drawable/ic_menu"
android:showAsAction="always"
android:title="More">
<menu>

<!-- Agregar -->
<item
android:id="+id/actionmenu_add"
android:icon="drawable/ic_add"
android:showAsAction="never"
android:title="string/setmenu_add"/>

<!-- Borrar -->
<item
android:id="+id/actionmenu_del"
android:icon="drawable/ic_del"
android:showAsAction="never"
android:title="string/setmenu_del"/>

<!-- Actualizar -->
<item
android:id="+id/actionmenu_update"
android:icon="drawable/ic_mod"
android:showAsAction="never"
android:title="string/setmenu_update"/>

<!-- Importar -->
<item
android:id="+id/actionmenu_import"
android:icon="drawable/ic_imp"
android:showAsAction="never"
android:title="string/setmenu_import"/>
</menu>
</item>
Y use el mismo código dentro del botón pero no lo ejecuto.

¿Cual es el problema? ¿por que la diferencia? como hago para mostrar ese segundo menú


Muchas Gracias