Gosto que minhas IUs sejam intuitivas; cada tela deve orientar o usuário de maneira natural e discreta para a próxima etapa do aplicativo. Exceto isso, eu me esforço para tornar as coisas o mais confusas e confusas possíveis.
Só brincando :-)
Eu tenho três TableRow
s, cada um contendo um controle EditText somente leitura e não focalizável e um botão à sua direita. Cada botão inicia a mesma atividade, mas com um argumento diferente. O usuário faz uma seleção lá e a subatividade termina, preenchendo o apropriado EditText
com a seleção do usuário.
É o mecanismo clássico de valores em cascata; cada seleção restringe as opções disponíveis para a próxima seleção, etc. Portanto, estou desabilitando os dois controles em cada uma das próximas linhas até que EditText na linha atual contenha um valor.
Preciso fazer uma de duas coisas, nesta ordem de preferência:
- Quando um botão é clicado, imediatamente remove o foco sem definir o foco para um botão diferente
- Defina o foco para o primeiro botão quando a atividade começar
O problema se manifesta após o retorno da subatividade; o botão clicado mantém o foco.
Re: nº 1 acima - não parece ser um removeFocus()
método ou algo semelhante
Re: nº 2 acima - posso usar requestFocus()
para definir o foco para o botão na próxima linha, e isso funciona depois que a subatividade retorna, mas por algum motivo não funciona na atividade pai onCreate()
.
Preciso da consistência da IU em qualquer direção - nenhum botão tem foco depois que a subatividade termina ou cada botão recebe o foco dependendo de seu lugar no fluxo lógico, incluindo o primeiro (e único) botão ativo antes de qualquer seleção.