2011-12-28 27 views
6

sự khác biệt giữa registerForContextMenu là những gì:khác biệt registerForContextMenu và setOnCreateContextMenuListener?

Đăng ký một menu ngữ cảnh để được hiển thị cho quan điểm nhất định (nhiều quan điểm có thể hiển thị menu ngữ cảnh). Phương pháp này sẽ đặt View.OnCreateContextMenuListener trên chế độ xem thành hoạt động này

Đăng ký cuộc gọiForContextMenu() và chuyển giao chế độ xem bạn muốn cung cấp trình đơn ngữ cảnh. Khi Chế độ xem này sau đó nhận được báo chí dài, nó sẽ hiển thị menu ngữ cảnh.

và setOnCreateContextMenuListener:

Đăng ký một callback được gọi khi menu ngữ cảnh cho quan điểm này đang được xây dựng. Nếu chế độ xem này không thể nhấp dài, chế độ xem có thể nhấp lâu.

loại nào sẽ sử dụng? và về nội dung có thể nhấp dài: cả hai đều đang làm điều tương tự ...

Cảm ơn

+0

Có vẻ như chúng giống nhau. –

Trả lời

17

Khi nghi ngờ ... hãy xem mã nguồn Android! Nó là nguồn mở, sau khi tất cả. :)

git: //android.git.kernel.org/platform/frameworks/base.git/core/java/android/view/View.java:

/** 
* Register a callback to be invoked when the context menu for this view is 
* being built. If this view is not long clickable, it becomes long clickable. 
* 
* @param l The callback that will run 
* 
*/ 
public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) { 
    if (!isLongClickable()) { 
     setLongClickable(true); 
    } 
    mOnCreateContextMenuListener = l; 
} 

git: //android.git.kernel.org/platform/frameworks/base.git/core/java/android/app/Activity.java:

/** 
* Registers a context menu to be shown for the given view (multiple views 
* can show the context menu). This method will set the 
* {@link OnCreateContextMenuListener} on the view to this activity, so 
* {@link #onCreateContextMenu(ContextMenu, View, ContextMenuInfo)} will be 
* called when it is time to show the context menu. 
* 
* @see #unregisterForContextMenu(View) 
* @param view The view that should show a context menu. 
*/ 
public void registerForContextMenu(View view) { 
    view.setOnCreateContextMenuListener(this); 
} 

Vì vậy, câu trả lời là họ đang như nhau. registerForContextMenu() không có gì ngoại trừ việc gọi setOnCreateContextMenuListener().

+0

Cảm ơn mmh, tôi chưa bao giờ thử xem mã nguồn, bằng bất kỳ ngôn ngữ nào, tôi sợ bị mất chỉ sau vài giây, nhưng tốt thôi, tôi sẽ xem lần sau! cảm ơn câu trả lời của bạn! Chúc mừng! – Paul

+0

câu trả lời mà có thể không có yêu cầu .. hoàn hảo, @Trevor Johns. Ngoài ra, nó cho thấy cách để giải quyết các loại câu hỏi/nghi ngờ tương tự khác. – Srichakradhar

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