Establecer un elemento de menú tal como se ha comprobado desde el código
Tengo una aplicación de Android con el siguiente elemento de menú en una de las actividades (que se refiere al manejo de una lista de nombres y números de mac):
<item android:id="@+id/menu_sort_tagg" android:icon="@android:drawable/ic_menu_sort_by_size" android:title="@string/menu_sort_list" > <menu> <group android:checkableBehavior="single"> <item android:id="@+id/sort_by_name" android:title="@string/sort_by_name" /> <item android:id="@+id/sort_by_mac" android:title="@string/sort_by_mac" /> </menu> </item>
y como el estado de la aplicación cambia, quiero ser capaz de pre-comprobar qué elemento en la lista de opciones de ordenación que se utilizó la última vez con el código siguiente:
- ¿Qué causa "RuntimeException: línea de archivo XML binario # 20: Debe proporcionar un atributo layout_height." (Se sospecha que ActionBarScherlock)?
- Java.lang.RuntimeException: Handler (android.os.Handler) envío de mensajes a un Handler en un hilo muerto
- Java.lang.RuntimeException: falló la toma de imagen
- RuntimeException utilizando Camera.open ()
- Java.lang.RuntimeException: No se puede inicializar el motor de efecto para type: 0bed4300-ddd6-11db-8f34-0002a5d5c51b Error: -3
((MenuItem)findViewById(R.id.sort_by_name)).setChecked(true);
El problema es que esta línea específica me da una excepción de tiempo de ejecución. ¿Alguien tiene una pista por qué?
Una mirada al registro revela que las excepciones de tiempo de ejecución son activadas por una excepción de puntero nulo. Cambiando el código de esta manera:
MenuItem mi = (MenuItem)findViewById(R.id.sort_by_name); mi.setChecked(true);
se hace evidente que la excepción se produce en la instrucción seconds, es decir, el MenuItem mi es nulo. Entonces, ¿por qué falla la primera instrucción para llevar un puntero al MenuItem correcto?
- Barra de acción de la pestaña de Android
- RuntimeException: tipo de letra nativo no se puede hacer o pérdida de memoria para personalizado TextView carga de fuente
- La exención 'No se puede agregar ventana - token de Android' no es para una aplicación '
- Java.lang.RuntimeException: No se puede instanciar el servicio .GCMIntentService
- "RuntimeException: Realizar una pausa de actividad que no se reanuda"
- Java.lang.RuntimeException: Error al entregar el resultado ResultInfo {who = null, request = 1, result = -1, data = intention} a la actividad
- ¿Por qué androide logcat no muestra el seguimiento de la pila para una excepción de tiempo de ejecución?
- ¿Por qué ocurrió este error? Java.lang.RuntimeException: ImageLoader debe ser init con la configuración antes de usar
No puedes encontrar findViewById()
para un menú, porque es un menú, no una vista. Y puede cambiar el estado del menú cuando se está creando o preparando. Por ejemplo, si crea un menú de opciones, puede hacerlo en el método Activity: onPrepareOptionsMenu()
:
@Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); menu.findItem(R.id.sort_by_name).setChecked(true); //Also you can do this for sub menu menu.getItem(firstItemIndex).getSubMenu().getItem(subItemIndex).setChecked(true); return true; }
- "Java.lang.IllegalArgumentException: No configs config configSpec" Al abrir la intención de la cámara
- impresión a una impresora AirPrint de Android