Me gusta que mis UI sean intuitivas; cada pantalla debe guiar al usuario de forma natural y discreta hacia el siguiente paso de la aplicación. Salvo eso, me esfuerzo por hacer las cosas lo más confusas y confusas posible.
Es una broma :-)
Tengo tres TableRow
s, cada uno contiene un control EditText de solo lectura y no enfocable y luego un botón a su derecha. Cada botón inicia la misma actividad pero con un argumento diferente. El usuario realiza una selección allí y finaliza la subactividad, llenando el correspondiente EditText
con la selección del usuario.
Es el mecanismo clásico de valores en cascada; cada selección reduce las opciones disponibles para la siguiente selección, etc. Por lo tanto, estoy deshabilitando ambos controles en cada una de las siguientes filas hasta que EditText en la fila actual contenga un valor.
Necesito hacer una de dos cosas, en este orden de preferencia:
- Cuando se hace clic en un botón, elimine inmediatamente el enfoque sin establecer el enfoque en un botón diferente
- Establezca el foco en el primer botón cuando comience la actividad
El problema se manifiesta después de que regresa la subactividad; el botón en el que se hizo clic conserva el enfoque.
Re: # 1 arriba - No parece haber un removeFocus()
método, o algo similar
Re: # 2 anterior: puedo usar requestFocus()
para establecer el enfoque en el botón en la siguiente fila, y eso funciona después de que regresa la subactividad, pero por alguna razón no funciona en la actividad principal onCreate()
.
Necesito coherencia en la interfaz de usuario en cualquier dirección: o ningún botón tiene el foco después de que finaliza la subactividad o cada botón recibe el foco según su lugar en el flujo lógico, incluido el primer (y único) botón activo antes de cualquier selección.