Мне нравятся мои интуитивные интерфейсы; каждый экран должен естественным образом и ненавязчиво направлять пользователя на следующий шаг в приложении. Если я не согласен с этим, я стараюсь сделать вещи такими же запутанными и запутанными, насколько это возможно.
Просто шучу: -)
У меня есть три TableRows, каждый из которых содержит только элемент управления EditText для чтения и без фокусировки, а затем кнопку справа. Каждая кнопка запускает ту же самую активность, но с другим аргументом. Пользователь делает выбор там, и суб-активность завершается, заполняя соответствующий EditText с выбором пользователя.
Это классический механизм каскадных значений; каждый выбор сужает доступные параметры для следующего выбора и т.д. Таким образом, я отключу оба элемента управления в каждой из следующих строк, пока EditText в текущей строке не будет содержать значение.
Мне нужно сделать одну из двух вещей в этом порядке:
- Когда нажата кнопка, немедленно удалите фокус, не устанавливая фокус на другую кнопку.
- Установите фокус на первую кнопку при запуске активности.
Проблема проявляется после возвращения суб-активности; нажатая кнопка сохраняет фокус.
Re: # 1 выше - Не существует метода removeFocus() или чего-то подобного
Re: # 2 выше - я могу использовать requestFocus(), чтобы установить фокус на кнопку в следующей строке, и это работает после возвращения суб-активности, но по какой-то причине оно не работает в родительской активности onCreate().
Мне нужно согласованность пользовательского интерфейса в любом направлении - либо никакие кнопки не имеют фокуса после завершения суб-активности, либо каждая кнопка получает фокус в зависимости от своего места в логическом потоке, включая самую первую (и только) активную кнопку до любого выбор.