2011-12-28 13 views
6

क्या registerForContextMenu के बीच का अंतर है:अंतर रजिस्टरफॉर कॉन्टेक्स्टमेनू और सेटऑनक्रेट कोंटेक्स्टमेनू लिस्टनर?

एक संदर्भ मेनू रजिस्टर (ऐसे कई दृश्य संदर्भ मेनू दिखा सकते हैं) विशेष दृश्य के लिए दिखाया जा सकता है। यह विधि View.OnCreateContextMenuListener को इस गतिविधि के दृश्य पर सेट करेगा

कॉल रजिस्टरफॉर कॉन्टेक्स्टमेनू() को कॉल करें और इसे देखें कि आप एक संदर्भ मेनू देना चाहते हैं। जब यह दृश्य तब एक लंबे समय तक प्रेस प्राप्त करता है, तो यह एक संदर्भ मेनू प्रदर्शित करता है।

और setOnCreateContextMenuListener:

एक कॉलबैक रजिस्टर जब इस दृश्य के लिए संदर्भ मेनू बनाया जा रहा है लागू किया जा करने के लिए। यदि यह दृश्य लंबे समय तक क्लिक करने योग्य नहीं है, यह लंबे समय तक क्लिक करने योग्य हो जाता है।

कौन सा उपयोग करने के लिए? और लंबे समय से क्लिक करने योग्य सामग्री के बारे में: दोनों ही बात कर रहे हैं ...

धन्यवाद

+0

ऐसा लगता है कि वे एक ही चीज़ हैं। –

उत्तर

17

संदेह होने पर ... एंड्रॉयड स्रोत कोड को देखो! यह सब के बाद, खुला स्रोत है। :)

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); 
} 

तो, जवाब यह है कि वे एक ही कर रहे हैं है। registerForContextMenu()setOnCreateContextMenuListener() को आमंत्रित करने के अलावा कुछ भी नहीं करता है।

+0

mmh धन्यवाद, मैंने कभी भी किसी भी भाषा में स्रोत कोड को देखने की कोशिश नहीं की है, मुझे कुछ सेकंड के बाद खोने से डर है, लेकिन ठीक है, मुझे अगली बार एक नज़र आएगी! आपके उत्तर के लिए धन्यवाद! चीयर्स! – Paul

+0

उत्तर जिसके लिए कोई अनुरोध नहीं हो सकता .. सही, @ ट्रेवर जॉन्स। साथ ही, यह अन्य समान प्रकार के प्रश्नों/संदेहों से निपटने का तरीका दिखाता है। – Srichakradhar

संबंधित मुद्दे