दिलचस्प पोस्ट
एक नया पैरामीटर के रूप में बाल इंटरफ़ेस के साथ विधि पैरामीटर ओवरराइड करें दो MySQL डाटाबेस की तुलना करें विशेषता द्वारा तत्वों का चयन करें मैं सीएसएस के साथ पाठ कैसे बदल सकता हूँ? मर्जेशोर्ट पायथन Java 8 के साथ एक प्रोग्राम जावा 7 पर चलाया जा सकता है? कैसे ईक्ल्यूलेटर स्क्रीनशॉट ग्रहण का उपयोग करने के लिए? मैं दो बहुभाषी टेक्स्ट बॉक्स के स्क्रॉल को कैसे सिंक कर सकता हूं? एंड्रॉइड त्रुटि: एक्सएमरिन फॉर्मस एंड्रॉइड सपोर्ट लाइब्रेरी स्थापित करें मैं पाठ इनपुट फ़ील्ड में एक "खोज" बटन कैसे जोड़ूं? एक UIImage के अस्पष्टता / अल्फा सेट करने के लिए कैसे? चींटी के साथ एंड्रॉइड साइनिंग जांचें कि क्या कोई संख्या 3 से विभाजित है Google Analytics के साथ जावास्क्रिप्ट पुनर्निर्देशन स्काला से वर्गार्ज़ का उपयोग करना

एंड्रॉइड ऑनक्लिक एक्सएमएल बनाम ऑनक्लिक लेस्टनर

मुझे एहसास है कि एक समान-शब्दयुक्त सवाल पहले पूछा गया है, लेकिन यह अलग है। मैं एंड्रॉइड ऐप्स विकसित करने में काफी नया हूँ और मेरे पास android:onclick="" बीच अंतर (एस) के बारे में तीन प्रश्न हैं android:onclick="" XML विशेषता और setOnClickListener विधि

  1. दोनों में क्या मतभेद हैं? क्या दो कार्यान्वयन में अंतर समय या चलाने के समय या दोनों को मिला?

  2. क्या उपयोग के मामलों अनुकूल हैं जो कार्यान्वयन के लिए?

  3. एंड्रॉइड में टुकड़ों के इस्तेमाल के कार्यान्वयन के विकल्प में क्या फर्क है?

Solutions Collecting From Web of "एंड्रॉइड ऑनक्लिक एक्सएमएल बनाम ऑनक्लिक लेस्टनर"

OnClickListener बनाम OnClick के बीच अंतर:

  • OnClickListener वह इंटरफ़ेस है जिसे आप लागू करने की आवश्यकता है और जावा कोड में एक दृश्य पर सेट किया जा सकता है।
  • OnClickListener जो वास्तव में किसी को क्लिक करने के लिए इंतजार कर रहा है, onclick निर्धारित करता है कि क्या होता है जब कोई व्यक्ति क्लिक करता है
  • हाल ही में एंड्रॉइड ने एंड्रॉइड: ऑनक्लिक नामक दृश्यों में एक एक्सएमएल विशेषता को जोड़ा है, जिसका उपयोग किसी भी इंटरफेस को लागू करने की आवश्यकता के बिना दृश्य के गतिविधि में सीधे क्लिक करने के लिए किया जा सकता है।
  • यदि आप की आवश्यकता है तो आप आसानी से एक श्रोता आचरण को दूसरे के साथ स्वैप कर सकते हैं
  • एक OnClickListener आपको घटना को चालू करने वाले दृश्य से क्लिक ईवेंट के क्रिया / व्यवहार को अलग करने के लिए सक्षम करता है। हालांकि सरल मामलों के लिए जटिल घटना से निपटने के लिए ऐसा कोई बड़ा सौदा नहीं है, इसका मतलब यह हो सकता है कि कोड की बेहतर पठनीयता और रखरखाव
  • चूंकि OnClickListener एक इंटरफ़ेस है, क्लास जो लागू करता है उसमें इवेंट वैरिएबल और विधियों का निर्धारण करने में लचीलापन है जो इसे ईवेंट को संभालने के लिए आवश्यक है। फिर से, यह साधारण मामलों में एक बड़ा सौदा नहीं है, लेकिन जटिल मामलों के लिए, हम घटनाओं को ट्रिगर करने वाले दृश्य के कोड के साथ ईवेंट हैंडलिंग से संबंधित चर / विधियों को अपनाने के लिए आवश्यक नहीं बनाना चाहते हैं।
  • एक्सएलएल लेआउट में बाध्यकारी फ़ंक्शन के साथ onClick onClick और फ़ंक्शन के बीच एक बाध्यकारी है, जिसे वह कॉल करेगा। फ़ंक्शन को onClick को कार्य करने के लिए एक तर्क (दृश्य) होना चाहिए

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

setOnClickListener कोड कार्यान्वयन:

 Button btn = (Button) findViewById(R.id.mybutton); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myFancyMethod(v); } }); // some more code public void myFancyMethod(View v) { // does something very interesting } 

एक्सएमएल कार्यान्वयन:

 <?xml version="1.0" encoding="utf-8"?> <!-- layout elements --> <Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click me!" android:onClick="myFancyMethod" /> <!-- even more layout elements --> 

प्रदर्शन:

दोनों प्रदर्शन में समान हैं कंपाइल करते समय एक्सएमएल को द्विआधारी कोड में पूर्व-पार्स किया जाता है इसलिए एक्सएमएल में कोई ओवर-सिर नहीं है

सीमा:

एंड्रॉइड: onClick एपीआई स्तर 4 के लिए है, इसलिए यदि आप <1.6 को लक्षित कर रहे हैं, तो आप इसका उपयोग नहीं कर सकते।

सीधे शब्दों में:

यदि आपके पास android:onClick = "someMethod" xml में , यह आपकी गतिविधि कक्षा में public void someMethod लिए दिखता है। OnClickListener सही आपकी गतिविधि से कहा जाता है और यह किसी विशेष View से जुड़ा हुआ है। उदाहरण के लिए someButton.setOnClickListener और नीचे दिए गए कोड में कहा जाता है कि जब कुछ someButton दबाया जाता है तो क्या किया जाना चाहिए।

आशा करता हूँ की ये काम करेगा 🙂

xml onClick नेस्टेड लेआउट तत्वों के लिए काम नहीं करता है जो गतिशील रूप से API स्तर 19 में फुलाया जाता है

मुझे इस बारे में कोई बात नहीं है, लेकिन सावधान रहना है, हालांकि सावधान रहें, हालांकि android:onClick एक्सएमएल क्लिक को संभालने का एक सुविधाजनक तरीका है, setOnClickListener कार्यान्वयन को setOnClickListener जोड़ने से अतिरिक्त कुछ करना है दरअसल, यह देखने के लिए संपत्ति को clickable करने clickable है।

हालांकि यह अधिकांश एंड्रॉइड लागूकरणों पर समस्या नहीं हो सकता है, फोन कन्स्ट्रक्टर के अनुसार, बटन हमेशा क्लिक करने योग्य = सच में डिफ़ॉल्ट होता है, लेकिन कुछ फोन मॉडल पर अन्य कंसल्टेंट्स पर डिफ़ॉल्ट क्लिक करने योग्य = गैर बटन दृश्यों पर गलत हो सकता है।

इसलिए एक्सएमएल की स्थापना करना पर्याप्त नहीं है, आपको android:clickable="true" जोड़ने के लिए हर समय सोचना है android:clickable="true" गैर बटन पर android:clickable="true" , और अगर आपके पास एक उपकरण है जहां डिफ़ॉल्ट क्लिक करने योग्य है = सच है और आप इस XML को डालने के लिए भी एक बार भूल जाते हैं विशेषता, आप रनटाइम पर समस्या की सूचना नहीं देंगे, लेकिन जब आपके ग्राहकों के हाथों में होगा, तो बाजार पर प्रतिक्रिया मिलेगी!

इसके अलावा, हम कभी भी सुनिश्चित नहीं कर सकते हैं कि कैसे प्रोगुएड एक्सएमएल गुणों और वर्ग पद्धतियों का नाम बदल लेगा और नाम बदल सकता है, इसलिए 100% सुरक्षित नहीं है कि उन्हें एक दिन में बग कभी नहीं होगा

इसलिए यदि आप कभी परेशानी नहीं करना चाहते हैं और इसके बारे में कभी सोचना नहीं चाहते हैं, तो setOnClickListener या पुस्तकालयों जैसे बटरकेनिफ का उपयोग एनोटेशन @OnClick(R.id.button)

जैसा कि पहले कहा गया है: वे दोनों एक घटना के जवाब में तर्क जोड़ने का एक तरीका है, इस मामले में एक 'क्लिक' घटना

मैं तर्क और प्रस्तुति के बीच अलग होने के लिए जाता हूं, जैसे कि हम HTML / JavaScript दुनिया में करते हैं: XML को प्रस्तुति के लिए छोड़ें और कोड के माध्यम से ईवेंट श्रोताओं को जोड़ दें।

यदि आपके पास केवल एक ही विधि का उपयोग करते हुए कई बटन हैं, तो मैं सुझाव देता हूं कि यह जावा में है। लेकिन अगर आपके पास एक विशिष्ट विधि के साथ एक बटन है, तो XML पर onClick बेहतर होगा।

हमेशा एंड्रॉइड का उपयोग करना अधिक सुविधाजनक होता है: onClick विशेषता जब तक आपके पास कोई अच्छा कारण नहीं है, उदाहरण के लिए, यदि आप रनटाइम पर बटन को इन्स्तांत करते हैं या आपको एक टुकड़ा उप-वर्ग में क्लिक व्यवहार को घोषित करने की आवश्यकता है

मुझे लगता है कि उनके बीच मुख्य अंतर है:

OnClick: जब आप अपनी उंगली से बटन पर क्लिक करते हैं

OnClickListner: यह एक व्यापक विकल्प हो सकता है कि विभिन्न कोड में लागू किया जा सकता है।

उदाहरण के लिए जब आप यूआरएल "ymail.com" टाइप करते हैं, तो yahoo आपके ब्राउजर से अपना यूज़रनेम और आपका पासवर्ड ढूंढता है और अपना मेल खोलने के लिए स्टेट बटन दबाएं। यह क्रिया केवल onClickListener पर लागू की जानी चाहिए

यह मेरा विचार है!