tôi triển khai ActionMode trong Ứng dụng Android của mình bằng ActionBarSherlock. Với ABS, bạn có thể tạo Mã hành động trước API 11 nhưng cách dễ dàng với: listView.setMultiChoiceModeListener(new MultiChoiceModeListener() ...
không dành cho ứng dụng trước API 11. Có cách nào tốt để xây dựng Menu ngữ cảnh chế độ hành động trước API 11 không? Tôi muốn thực hiện một cú nhấp chuột dài trên một mục danh sách và bắt đầu ActionMode, trong đó tôi có thể nhấp vào nhiều mục. Trên một nhấp chuột đơn giản, tôi hiển thị một trang chi tiết của mục danh sách. Tôi sử dụng phương pháp registerForContext()
nhưng điều này tạo ra một cú nhấp chuột đơn giản và dài.MultiChoiceMode trước API 11
Có ai là mẹo hay cho tôi.
EDIT
Giải pháp cho câu hỏi của tôi đã được như sau: Trên một mục dài nhấp i hoạt động chế độ hoạt động và tiết kiệm này trong một biến. Trong phương pháp bấm vào mục tôi thực hiện một câu lệnh if-else với:
if(actionMode == null)
{
// open new activity or update second fragment
showDetails(itemPosition);
}
else
{
// update ui or close CAB if no item selected
showCAB(itemPosition);
}
Phương thức showCAB (vị trí) cập nhật số mục được chọn, đánh dấu mục nền và vân vân.
Cảm ơn bạn đã trả lời. Tôi tìm thấy trang này cũng ngày hôm qua và thực hiện các giải pháp. Tôi thay đổi onItemClickListener thành một onItemLongClickListener và điều này không chạy quá tốt. Tôi có thể khởi động ActionMode sau một cú nhấp chuột ngắn trên một Item, đóng hoạt động của tôi mở ra và sau đó nhấn lại một lần nữa vào mục đó. Giải pháp không hoàn hảo nhưng tốt cho sự khởi đầu. – Happo
Nếu tôi hiểu rõ vấn đề của bạn, đó là nó vẫn mở hoạt động của bạn trên một nhấp chuột đơn giản vào các mục của ListView của bạn? Sau đó, trên 'onItemLongClickListener', bạn có thể đặt' listView' 'onItemClickListener' thành null, để nó không mở bất kỳ hoạt động nào.Hãy chắc chắn để đặt nó trở lại bản gốc 'onItemClickListener' (bạn có thể lưu nó vào một biến) trên' onDestroyActionMode' của lớp 'ModeCallback' – MagicMicky
Trước khi phương thức onItemClick được gọi là sự kiện đã thông qua phương thức onItemLongClick. Phương thức này trả về một boolean vì vậy nếu tôi trả về true sự kiện đã được xử lý và không đạt được phương thức onItemClick. Nếu tôi trả về false tôi đã không xử lý các nhấp chuột dài và thực hiện một loại nhấp chuột. Tôi tìm thấy điều này trong một số câu hỏi khác nhưng giải pháp của bạn cũng có thể. Tôi thử nghiệm nó một chút sau ngày hôm nay. – Happo