2010-10-17 7 views
8

làm cách nào để xóa tiêu điểm khỏi mục menu tùy chọn? I E. khi tôi mở menu lần đầu tiên, không có mục nào có tiêu điểm. tuy nhiên, nếu tôi tập trung vào một trong số họ bằng cách sử dụng quả bóng theo dõi, và sau đó đóng và mở lại menu, tiêu điểm vẫn ở đó. Làm sao để tôi bỏ nó đi?menu tùy chọn - xóa tiêu điểm khỏi mục

Tôi đang xóa và tạo lại menu trong onPrepareOptionsMenu (vì tôi phải điều chỉnh nó thành trạng thái hoạt động hiện tại).

EDIT:

public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.clear(); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.my_menu, menu); 

    return true; 
} 
+2

bạn có thể tìm ra giải pháp cho điều này không? – dropsOfJupiter

+1

Bạn có thể đăng mã để tái tạo sự cố không? Tôi sẽ rất vui khi nhìn vào nó cho bạn. Đó là một vấn đề thú vị. –

Trả lời

0

Khi bạn sử dụng trackball (hoặc thực sự bấm phím bất kỳ khác trên bàn phím), bạn thoát khỏi touch mode. Từ thời điểm đó, sẽ có một số chế độ xem có tiêu điểm (bạn có thể thấy điều này bằng cách gọi Activity.getCurrentFocus()). Chế độ này vẫn tồn tại cho đến khi bạn chạm vào màn hình một lần nữa, tại thời điểm đó bạn sẽ nhập lại chế độ cảm ứng và khi bạn mở menu trong những dịp tiếp theo sẽ không có mục được lấy nét. Điều này xảy ra trong mọi ứng dụng Android đơn lẻ mà tôi đã thấy với một menu.

Tình trạng này không chỉ dành cho các mục menu tùy chọn mà còn cho các chế độ xem trong bố cục của bạn. Khi bạn rời khỏi chế độ cảm ứng, tôi không nghĩ có cách nào để nhập lại (và do đó xóa tiêu điểm khỏi tất cả các chế độ xem) trừ khi bạn chạm vào màn hình. Một giải pháp tôi đã thấy được trích dẫn để loại bỏ các hiệu ứng có thể nhìn thấy của tiêu điểm (khi không ở chế độ cảm ứng) chỉ đơn giản là đưa nó vào một phần tử không nhìn thấy được. Bạn có thể tạo ra một tùy chọn menu vô hình và cho nó tập trung khi bạn muốn xóa nó?

Trừ khi bạn tìm cách lập trình, nhập chế độ cảm ứng một cách đáng tin cậy hoặc xóa tiêu điểm khỏi tất cả các chế độ xem (gọi View.clearFocus() chỉ cần chuyển sang chế độ xem khác!), Đây có thể là đặt cược tốt nhất của bạn.