2012-01-29 41 views
6

Dường như onCreateContextMenu không được gọi là gì cả. Trong onCreate của tôi cho ListActivity của tôi, tôi có:onCreateContextMenu không được gọi là

list = getListView(); 
registerForContextMenu(list); 

(Tôi biết nó thừa, và tôi vừa vượt qua getListView() với cùng kết quả).

Đây là onCreateOntextMenu của tôi;

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    Log.d("LM", "onCreateContextMenu"); 

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

Nhật ký không bao giờ được tạo. Không ai có bất cứ đề nghị?

+0

Chỉ cần chuyển điều này cho người khác, tôi cũng đã thêm một onItemLongClickListener vào chế độ xem. Bây giờ điều đó có ý nghĩa với tôi vì sao nó không hoạt động. – spuppett

Trả lời

8

Suy nghĩ của tôi là ListView chặn sự kiện và không đi sâu vào hành vi contextMenu. Nó có ý nghĩa với tôi bởi vì hành vi OnItemLongClickListener chồng chéo contextMenu. Nếu không làm thế nào nó có thể nhận ra giữa contextMenu và OnItemLongClickListener?

+0

Đó cũng là những gì tôi đã tìm thấy. Sau khi quay trở lại mã để cho thấy rằng các nhấp chuột dài đã được làm việc, nó đánh tôi. – spuppett

+0

vâng .. Điều đó hoạt động !! Cảm ơn. – Shyam

-2

Bạn phải gọi phương thức registerForContextMenu(View view) trong onCreate(Bundle savedInstanceState).

0

Cố gắng xác định vị trí registerForContextMenu (danh sách); như phương thức cuối cùng để gọi phương thức onCreate. Tôi có nghĩa là phương pháp này được gọi là sau khi bộ điều hợp danh sách được gọi là không trước.

0

Chỉ cần loại bỏ youwidget.setonLongclicklisteneryourwidget.setLongClickable

Và sau đó thêm registerforContextmenu(yourwidget) trong onCreate() sau đó thêm mã theo widget sử dụng.

Hy vọng Điều đó sẽ hữu ích.

0

Vấn đề của tôi liên quan chặt chẽ đến câu trả lời của lulumeya, điều này đã chỉ cho tôi đúng hướng. Tôi đã thực hiện các menu ngữ cảnh nhiều lần trước và bằng cách nào đó không bao giờ chạy vào điều này cho đến bây giờ.

Tôi đã gọi số View.setOnClickListener(listener) trong Adapter.getView(...) khi cần ListView.setOnItemClickListener(listener) để tránh xung đột với menu ngữ cảnh.

Nói chung, tôi chắc chắn OnItemClickListener được tối ưu hóa hơn, đặc biệt vì chỉ có một phiên bản trình nghe được sử dụng thay vì tạo một phiên bản mới mỗi lần tạo hoặc tái tạo.

0

Tôi có vấn đề đó và chỉ có thể giải quyết nó bằng cách đảm bảo

  1. rằng vì resp. Hoạt động đã đăng ký Chế độ xem, cùng một Hoạt động phải sau đó cũng ghi đè lênCreateContextMenu(); thực hiện việc này trong một Fragment sẽ không hoạt động
  2. vì tôi đã sử dụng Phân đoạn bổ sung tạo Bộ điều hợp (và đăng ký với nó) Fragment không phải Hoạt động phải ghi đè lênContextItemSelected().

tôi đang xem xét bỏ cửa sổ bật lên nhấn và giữ trong lợi của một nút Youtube kiểu ở lề bên phải của thẻ nảy lên một thực đơn mà không phai mọi thứ khác để nền --- thuật ngữ tìm kiếm đó là những gì btw?

Các vấn đề liên quan