Tôi thích giao diện người dùng của mình trực quan; mỗi màn hình phải hướng dẫn người dùng một cách tự nhiên và không phô trương đến bước tiếp theo trong ứng dụng. Bỏ qua điều đó, tôi cố gắng làm cho mọi thứ trở nên khó hiểu và gây nhiễu nhất có thể.
Đùa thôi :-)
Tôi có ba cái TableRow, mỗi cái chứa một điều khiển EditText chỉ đọc và không tiêu điểm và sau đó là một nút ở bên phải của nó. Mỗi nút bắt đầu cùng một hoạt động nhưng với một đối số khác nhau. Người dùng thực hiện một lựa chọn ở đó và hoạt động phụ kết thúc, điền vào EditTextlựa chọn thích hợp với lựa chọn của người dùng.
Đó là cơ chế giá trị xếp tầng cổ điển; mỗi lựa chọn sẽ thu hẹp các tùy chọn có sẵn cho lựa chọn tiếp theo, v.v. Vì vậy, tôi đang tắt cả hai điều khiển trên mỗi hàng tiếp theo cho đến khi EditText trên hàng hiện tại chứa một giá trị.
Tôi cần thực hiện một trong hai việc, theo thứ tự ưu tiên sau:
- Khi một nút được nhấp, ngay lập tức xóa tiêu điểm mà không đặt tiêu điểm vào một nút khác
- Đặt tiêu điểm vào nút đầu tiên khi hoạt động bắt đầu
Vấn đề biểu hiện sau khi hoạt động con trở lại; nút được nhấp sẽ giữ lại tiêu điểm.
Re: # 1 ở trên - Có vẻ như không có một removeFocus()phương pháp hoặc một cái gì đó tương tự
Re: # 2 ở trên - Tôi có thể sử dụng requestFocus()để đặt tiêu điểm cho nút trên hàng tiếp theo và điều đó hoạt động sau khi hoạt động con trở lại, nhưng vì một số lý do, nó không hoạt động trong hoạt động chính onCreate().
Tôi cần tính nhất quán của giao diện người dùng theo cả hai hướng - không có nút nào có tiêu điểm sau khi hoạt động phụ kết thúc hoặc mỗi nút nhận được tiêu điểm tùy thuộc vào vị trí của nó trong luồng logic, bao gồm cả nút hoạt động đầu tiên (và duy nhất) trước bất kỳ lựa chọn nào.