Tôi có một số tiện ích trong chế độ xem, mỗi tiện ích cần có Mã hành động riêng. Tôi thấy rằng ActionMode không tự động loại bỏ khi người dùng chạm vào bên ngoài thanh hành động. Do đó, người dùng có thể dễ dàng bắt đầu một ActionMode cho một điều khiển, sau đó nhấn (longclick trong trường hợp của tôi) một điều khiển khác và xếp một ActionBar thứ hai lên trên đầu tiên. Điều này gây ra lỗi lập trình logic.cách phát hiện nếu actionmode đã có mặt
Tôi có thể theo dõi ActionMode hiện tại bằng biến thành viên cấp hoạt động và loại bỏ biến hiện tại nếu cần một biến mới. Howewver, điều này làm cho mã của tôi lộn xộn để đọc và duy trì. Và hơn nữa, tôi muốn loại bỏ nó ngay lập tức khi người dùng chạm vào bất cứ điều gì bên ngoài thanh hành động.
Bất kỳ đề xuất nào về cách tốt để xử lý việc này?
Ok, nhưng lộn xộn sang một bên, giả sử người dùng nhấp vào EditText mà bạn chưa phân loại. Làm thế nào để bạn loại bỏ thanh hành động không phù hợp? –
Ok, nếu tôi hiểu bạn đúng ... Tôi đã thực hiện nó như thế: biến toàn cục được thực hiện 'ActionMode mMode;', điền nó với chế độ hành động hiện tại trong phương thức 'onCreateActionMode (...)', và sau đó chỉ cần gọi 'mMode .finish() 'khi tôi cần thoát khỏi chế độ hành động hiện tại – user1049280
Phải, tôi hiểu điều đó. Nhưng làm thế nào để bạn biết khi nào nên gọi kết thúc()? Nghĩa là, có nhiều nơi người dùng có thể nhấp; bạn có phân lớp mọi đối tượng và kiểm tra MotionEvent.ACTION_DOWN và sau đó gọi kết thúc()? Điều đó sẽ rất dễ xảy ra lỗi, các bit mã này sẽ được rải khắp nơi. –