2011-09-17 12 views
20

मैं अपनी अधिकांश परियोजनाओं में हमेशा onclick() ईवेंट का उपयोग कर रहा हूं। लेकिन, मैंने OnClickListener() पढ़ा है। क्या कोई बता सकता है कि इन दोनों के बीच क्या अंतर है? और एंड्रॉइड एप्लिकेशन में कौन सा सबसे अच्छा उपयोग करना है?OnClick() ईवेंट और OnClickListener के बीच अंतर?

+3

आपने गलत जवाब स्वीकार कर लिया है। शॉन ओवेन या उपयोगकर्तासेवन 7 सही है। – Reno

+0

संभावित डुप्लिकेट [एंड्रॉइड वास्तव में कैसे करता है: ऑनक्लिक एक्सएमएल विशेषता setOnClickListener से अलग है?] (Http://stackoverflow.com/questions/4153517/how-exactly-does-the-androidonclick-xml-attribute-differ-from- setonclicklistener) –

उत्तर

27

मुझे यकीन नहीं है कि प्रश्न स्पष्ट है। View.OnClickListener एक इंटरफ़ेस है, जो onClick(View) विधि को परिभाषित करता है। यदि आपके पास एक वर्ग है जो क्लिकों को सुनना चाहता है, तो आपको इंटरफ़ेस को लागू करना चाहिए (यदि पहले से ही कक्षा को विस्तारित नहीं कर रहा है), और इस विधि को भी लागू करें। आपको दोनों का उपयोग करना होगा; वे किसी भी तरह के विकल्प नहीं हैं।

+0

इतनी दुखी है कि एंड्रॉइड में एक वोटिंग रिंग है जो सही उत्तरों को कम करती है :( – Reno

23

OnClickListener वह इंटरफ़ेस है जिसे आपको कार्यान्वित करने की आवश्यकता है और जावा कोड में एक दृश्य में सेट किया जा सकता है।

हाल ही में एंड्रॉइड ने android:onclick नामक विचारों पर एक एक्सएमएल विशेषता जोड़ा, जिसका उपयोग सीधे किसी भी इंटरफ़ेस को लागू किए बिना दृश्य की गतिविधि में क्लिक को संभालने के लिए किया जा सकता है।

दोनों एक ही तरीके से कार्य करते हैं, बस एक जावा कोड के माध्यम से और दूसरा एक्सएमएल कोड के माध्यम से सेट हो जाता है।

11

OnClickListener onclick निर्धारित करता है क्या होता है जब किसी को

क्लिक करता है श्रोता एक वर्ग है, onclick एक विधि है, इस तरह के अंतर नहीं साधारण मामलों में बहुत उपयोगी है, लेकिन अगर आप, क्या इंतजार कर रहा है कोई वास्तव में क्लिक करने के लिए है और अधिक जटिल इसे और अधिक आवश्यक हो जाता है होना चाहता हूँ

+1

+1 संक्षिप्त विवरण के लिए +1 के लिए +1 .. –

0

हम

public void button_onClick_name(View v) 
{ 
------- 
} 

का उपयोग कक्षा से बाहर एक विधि को परिभाषित करने के। लेकिन किसी घटक को परिभाषित करने के लिए किसी कक्षा के भीतर ईवेंट क्लिक करें, हम ऑनक्लिक श्रोता का उपयोग करते हैं।

20

मुझे लगता है कि आप onClick द्वारा मानते हैं कि आप एक्सएमएल लेआउट में परिभाषित करते हैं। ये दोनों वैकल्पिक हैं जो समान कार्य करते हैं लेकिन अलग-अलग लागू होते हैं।

  1. onClick एक्सएमएल लेआउट में बाध्यकारी समारोह के साथ onClick और समारोह है कि यह फोन करेगा के बीच एक बाध्यकारी है। फ़ंक्शन पर क्लिक करने के लिए फ़ंक्शन में एक तर्क (View) होना चाहिए।

  2. एक OnClickListener एक इंटरफ़ेस है जो कोई भी वर्ग लागू कर सकता है। चूंकि यह एक इंटरफ़ेस है कि कोई भी वर्ग कार्यान्वित कर सकता है, इसके रूप में इसमें अधिक लचीलापन और अधिक जटिल है। कुछ लचीलापन आप OnClickListener

    • साथ हो सकता है आप आसानी से दूसरे के साथ एक श्रोता कार्यान्वयन स्वैप सकता है अगर आप की जरूरत है।
    • एक OnClickListener आपको ईवेंट ईवेंट को ट्रिगर करने वाले View से क्लिक ईवेंट की क्रिया/व्यवहार को अलग करने में सक्षम बनाता है। सरल मामलों के लिए यह जटिल घटना प्रबंधन के लिए इतना बड़ा सौदा नहीं है, इसका मतलब यह हो सकता है कि कोड
    • OnClickListener एक इंटरफेस है, जो वर्ग लागू करता है, उदाहरण आवृत्ति और विधियों को निर्धारित करने में लचीलापन है कि घटना को संभालने के लिए इसकी जरूरत है। फिर, यह साधारण मामलों में एक बड़ा सौदा नहीं है, लेकिन जटिल मामलों के लिए, हम ईवेंट को ट्रिगर करने वाले दृश्य के कोड के साथ ईवेंट हैंडलिंग से संबंधित चर/विधियों को जरूरी नहीं करना चाहते हैं।
0

एक आदमी है जो अपने अनुप्रयोग के बटन पर क्लिक करें करने के लिए अपने उपयोगकर्ता इंतज़ार कर रहा है के रूप में "OnClickListener" पर विचार करें। फिर आपका लड़का आपकी विधि ऑनक्लिक() निष्पादित करेगा।

आपको अपनी एक्सएमएल फ़ाइल में अपने बटन पर एक आईडी डालना है, फिर इसे अपनी MainActivity.java फ़ाइल में एक नाम दें। फिर अपने लड़के को एक क्लिक श्रोता सेट करें। और अपनी ऑनक्लिक विधि जोड़ें। क्यों onClick इंटरफ़ेस View.OnClickListener करने के लिए बाध्य कर रहा है यही कारण है कि: https://developer.android.com/reference/android/view/View.OnClickListener.html

उदाहरण:

Button myButton = (Button)findViewById(R.id.myButton); 
myButton.setOnClickListener(new View.OnClickListener(){ 
    @override 
    public void onClick(View v) { 
     // your method... 
    } 
} 
0

जानने के कुछ कारणों से आप प्रोग्राम के रूप में एक OnClickListener सेट कर सकते हैं कर रहे हैं। पहला यह है कि यदि आप कभी भी अपने ऐप के चलते अपने बटन का व्यवहार बदलना चाहते हैं। आप अपने बटन को किसी अन्य विधि पर पूरी तरह से इंगित कर सकते हैं, या OnClickListener सेट करके बटन को अक्षम कर सकते हैं जो कुछ भी नहीं करता है।

जब आप onClick विशेषता का उपयोग करके श्रोता को परिभाषित करते हैं, तो दृश्य उस होस्ट के साथ केवल अपनी मेजबान गतिविधि में एक विधि की तलाश करता है। प्रोग्रामिंग रूप से OnClickListener सेट करने से आप अपनी मेजबान गतिविधि के अलावा कहीं से किसी बटन के व्यवहार को नियंत्रित कर सकते हैं। यह Fragments, Fragments के लिए बहुत प्रासंगिक हो जाएगा, हमेशा अपने बटन को नियंत्रित करने के लिए OnClickListeners का उपयोग करने की आवश्यकता है, क्योंकि वे गतिविधियां नहीं हैं, और onClick में परिभाषित श्रोताओं के लिए खोज नहीं की जाएगी।

5
Button button = (Button)findViewById(R.id.buttonId); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Do stuff 
    } 
}); 

OnClickListener एक अंतरफलक और onClick है OnClickListener की विधि है।

0

आप अपने XML में android:onClick="your_method" विशेषता जोड़ सकते हैं।

उदाहरण:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click" 
    android:onClick="your_method"/> 
0

हम java कोड में xml में OnClick और OnClickListner का उपयोग करें। दोनों एक समारोह करने के लिए उपयोग कर रहे हैं।

0

जब हम जावा कोड में बटन पर क्लिक श्रोता जोड़ना चाहते हैं, तो हम OnClickListener का उपयोग करते हैं।
हम लेआउट फ़ाइल में बटन को क्लिक श्रोता जोड़ने के लिए चाहते हैं, हम android:onClick="your_method"
का उपयोग आप XML संस्करण का उपयोग करते हैं, आप अपने ऐप कक्षा में your_method को लागू करना चाहिए।

0

कुछ कारण हैं कि आप प्रोग्रामिक रूप से ऑनक्लिक लिस्टनर क्यों सेट करना चाहते हैं। पहला यह है कि यदि आप कभी भी अपने ऐप के चलते अपने बटन का व्यवहार बदलना चाहते हैं। आप अपने बटन को किसी अन्य विधि पर पूरी तरह से इंगित कर सकते हैं, या केवल ऑनक्लिक लिस्टनर सेट करके बटन को अक्षम कर सकते हैं जो कुछ भी नहीं करता है।

जब आप ऑनक्लिक विशेषता का उपयोग करके श्रोता को परिभाषित करते हैं, तो दृश्य उस होस्ट के साथ केवल अपनी मेजबान गतिविधि में एक विधि की तलाश करता है। प्रोग्रामेटिक रूप से ऑनक्लिक लिस्टनर सेट करने से आप अपनी मेजबान गतिविधि के अलावा कहीं और बटन के व्यवहार को नियंत्रित कर सकते हैं।यह बहुत प्रासंगिक हो जाएगा जब हम टुकड़ों के बारे में जानेंगे, जो मूल रूप से मिनी गतिविधियां हैं, जिससे आप अपने जीवन चक्र के साथ विचारों का पुन: प्रयोज्य संग्रह बना सकते हैं, जिसे गतिविधियों में इकट्ठा किया जा सकता है। टुकड़ों को हमेशा अपने बटन को नियंत्रित करने के लिए OnClickListeners का उपयोग करने की आवश्यकता होती है, क्योंकि वे गतिविधियां नहीं हैं, और ऑनक्लिक में परिभाषित श्रोताओं के लिए खोज नहीं की जाएगी।

0

हर किसी ने OnClickListener श्रोता के बारे में उल्लेख किया है जिसका उपयोग हमेशा किया जाता है। मैं एक और बिंदु जोड़ना चाहता हूं विधि के रूप में काम करता है और इसे संदर्भित करने की आवश्यकता नहीं है, इसलिए जब आप कुछ कार्य निष्पादित किए जाने के बाद बटन जोड़ना चाहते हैं तो यह उपयोगी होता है ताकि आप इसे OnClickListener के लिए संदर्भित नहीं कर सकें।

एक example लिए

जब हम केवल लेआउट (कोई टुकड़े) अगर आप किसी भी लेआउट में एक बटन डाल यह केवल insialized जब लेआउट दिखाई तो आप विधि findViewById बटन के लिए उस मामले उपयोगी becomed में उपयोग नहीं कर सकते बस डाल के साथ viewpager बनाने गतिविधि में वह विधि !!

0

यहां सरल शब्दावली है यदि आप घर पर हैं और यू किसी को फोन करना चाहते हैं .. आप सीधे कॉल कर सकते हैं और वे आपको सुन सकते हैं। (ऑनक्लिक का उपयोग करें)। लेकिन अगर आप बाहर हैं और आप घर पर किसी को फोन करना चाहते हैं तो आपको फोन या इंटरनेट का उपयोग करने की ज़रूरत है। (ऑनक्लिकलिस्टर का उपयोग करने की आवश्यकता है)। एंड्रॉइड में सब कुछ घर से शुरू होता है, आईई। main_activity इस तरह एंड्रॉइड यार काम को आसान बनाता है; जब आपके पास एक गतिविधि होती है तो आपको श्रोता को संलग्न करने, ऑब्जेक्ट बनाने, और इसे परिभाषित करने की आवश्यकता नहीं होती है। बस क्लिक करेंक्लिक। ऑनक्लिकलिस्टर आमतौर पर टुकड़ों में उपयोग किया जाता है। तो कोडिंग रखें।

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