PDA

Ver la Versión Completa : [ CONSULTA ] Menú dinámico


KrLx_roller
17/12/11, 17:24:13
Hola. Que yo sepa hay dos maneras diferentes de crear menus, una mediante un archivo XML y otra mediante código Java. Quiero crear un menú dinámico, es decir, si la variable j = 1, quiero que haya 1 submenú, pero si j=4, quiero que haya 4 submenus. Creo que la única forma de hacer eso es mediante código JAVA en una clase. De momento esto es lo que tengo:


@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu smnu = menu.addSubMenu(Menu.NONE, OPT1, Menu.NONE, "OPT1").setIcon(R.drawable.opt1);
for (j = 0; j < i; j++)
{
smnu.add(Menu.NONE, SubOpc + j, Menu.NONE, nameOpc[j]);
}
menu.add(Menu.NONE, OPT2, Menu.NONE, "OPT2").setIcon(R.drawable.opt2);
menu.add(Menu.NONE, OPT3, Menu.NONE, "OPT3").setIcon(R.drawable.opt3);
return true;
}


Ahora quiero establecer una acción para cada menú y submenu. El problema que tengo es que creando los menús de esta forma, no hay un identificador para cada elemento, por tanto no puedo usar esto:


@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.MnuOpc1:
lblMensaje.setText("Opcion 1 pulsada!");
return true;
case R.id.MnuOpc2:
lblMensaje.setText("Opcion 2 pulsada!");
return true;
case R.id.MnuOpc3:
lblMensaje.setText("Opcion 3 pulsada!");
return true;
default:
return super.onOptionsItemSelected(item);
}
}


Entonces, cómo puedo establecer una acción para cada elemento del menú?

Gracias!

kriogeN
17/12/11, 22:41:59
Tienes que usar el valor entero que pasas en el 2º parametro al añadir la opción, en tu caso, OPT1, OPT2... que supongo que serán variables globales y finales para simular constantes.

Es decir:

case OPT1:
....
case OPT2:
.....

Un saludo.

KrLx_roller
17/12/11, 23:52:17
Muchas gracias por la respuesta! Funciona a la perfección!

Un saludo!