android - बटन एंड्रॉइड में श्रोताओं पर क्लिक करें




android-layout android-button (2)

संभावित डुप्लिकेट:
OnClick () ईवेंट और OnClickListener के बीच अंतर?

मैं एंड्रॉइड विकास के लिए अर्द्ध-नया हूं और जब मैंने पहली बार शुरू किया था तो मैंने किसी भी माध्यम से एक्सएमएल लेआउट का उपयोग करने से बचने की कोशिश की ताकि मेरी कुछ पिछली परियोजनाओं में बटन शामिल हों जो स्पष्ट रूप से ऑनक्लिक लिस्टनर बनाते हैं और इसे अज्ञात आंतरिक वर्ग के रूप में कार्यान्वित करते हैं। जैसे कि -

final Button button = new Button(this);
button.setText("Click to change second line of text");

OnClickListener buttonListener = new View.OnClickListener() {
    boolean clicked = false;
    int numClicks = 0;

    @Override
    public void onClick(View v) {
        if(numClicks > 5) {
            button.setText("STOP IT");
        }
        numClicks++;
        if(clicked == false){
            clicked = true;
            tv2.setText("Text Changed on Button Click");    
        }
        else
        {
            clicked = false;
            tv2.setText("Click again");
        }       
    }
};
button.setOnClickListener(buttonListener);

लेकिन जैसा कि मैंने एंड्रॉइड से अधिक परिचित हो गया, मैंने एक्सएमएल लेआउट के मूल्य को समझना शुरू कर दिया और इस तरह के बटन लागू किए

    <Button
    android:id="@+id/button1"
    android:layout_height = "wrap_content"
    android:layout_width ="wrap_content"
    android:text = "lets do this"
    android:onClick = "DoIt"
    />

लेआउट xml में, जहां जावा में DOIt परिभाषित किया गया था।

मेरा सवाल यह है कि, ये 2 तरीके कार्यात्मक रूप से एक ही चीज हैं? क्या दृश्यों के पीछे कहीं संकलक द्वारा ऑनक्लिक लिस्टनर परिभाषित किया जा रहा है? क्या कोई ऐसी विशेषताएं हैं जो आप एक तरफ या दूसरे का उपयोग कर व्यापार करते हैं?


एक्सएमएल का उपयोग करके, आपको ऑनक्लिक श्रोता को स्वयं सेट करने की आवश्यकता है। सबसे पहले आपकी कक्षा implements OnClickListener तो परिवर्तनीय Button button1; जोड़ें Button button1; फिर इसे अपने onCreate()

button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);

जब आप OnClickListener को लागू करते हैं तो आपको विरासत विधि onClick() क्लिक) पर क्लिक करना होगा जहां आप अपने क्लिक को संभालेंगे


भले ही आप एंड्रॉइड को परिभाषित करते हैं: XML पर onClick = "DoIt", आपको यह सुनिश्चित करना होगा कि आपकी गतिविधि (या संदर्भ देखें) में सार्वजनिक विधि को सटीक उसी नाम से परिभाषित किया गया है और पैरामीटर के रूप में देखें। एंड्रॉइड गतिविधि में इस कार्यान्वयन के साथ आपकी परिभाषाओं को तार देता है। अंत में, कार्यान्वयन में एक ही कोड होगा जिसे आपने अनाम आंतरिक कक्षा में लिखा था। इसलिए, गतिविधि में आंतरिक वर्ग और श्रोता अटैचमेंट होने के बजाय सरल शब्दों में, आपके पास कार्यान्वयन कोड के साथ बस एक सार्वजनिक विधि होगी।





android-button