Мені подобається, щоб мої інтерфейси були інтуїтивно зрозумілими; кожен екран повинен, природно і ненав’язливо, направляти користувача до наступного кроку в програмі. За винятком цього, я прагну зробити все якомога заплутанішим і незрозумілішим.
Жартую :-)
У мене три TableRow
s, кожна з яких містить лише для читання та нефокусований елемент керування EditText, а потім кнопку праворуч. Кожна кнопка починає ту саму діяльність, але з різним аргументом. Користувач робить там вибір, а піддіяльність завершує, заповнюючи відповідний EditText
вибір користувачем.
Це класичний механізм каскадних значень; кожен вибір звужує доступні параметри для наступного виділення і т. д. Таким чином, я вимикаю обидва елементи керування в кожному з наступних рядків, поки EditText у поточному рядку не містить значення.
Мені потрібно зробити одну з двох речей, у такому порядку переваг:
- Після натискання кнопки негайно зніміть фокус, не встановлюючи фокус на іншу кнопку
- Встановіть фокус на першу кнопку, коли починається дія
Проблема проявляється після повернення субдіяльності; натиснута кнопка зберігає фокус.
Re: №1 вище - схоже, не існує removeFocus()
методу чи чогось подібного
Re: # 2 вище - я можу використовувати, requestFocus()
щоб встановити фокус на кнопку в наступному рядку, і це працює після повернення суб-активності, але чомусь це не працює в батьківській діяльності onCreate()
.
Мені потрібна узгодженість інтерфейсу користувача в будь-якому напрямку - або жодна кнопка не має фокусу після завершення підзаходу, або кожна кнопка отримує фокус залежно від свого місця в логічному потоці, включаючи саму першу (і єдину) активну кнопку до будь-якого вибору.