2011-02-19 19 views
9

यह संभव है, इसएंड्रॉइड, एक्सएमएल में चेकबॉक्स श्रोता?

XML जैसी चीजें करने के लिए:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 
    <Button android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/addContactButton" 
       android:text="@string/addContactButtonLabel" 
       android:onClick="launchContactAdder"/><!-- here --> 

</LinearLayout> 

जावा:

public void launchContactAdder(View v) 
{ 
    Intent i = new Intent(this, ContactAdder.class); 
    startActivity(i); 
} 

लेकिन एक आवश्यकता है, कि विधि सार्वजनिक, शून्य और सबसे महत्वपूर्ण लेना चाहिए एक तर्क के रूप में देखें।

अब मैं बिल्कुल वही काम करना चाहता हूं लेकिन चेकबॉक्स बटन के साथ। चेकबॉक्स में एंड्रॉइड है: ऑनक्लिक विशेषता, लेकिन एंड्रॉइड ट्यूटोरियल में (http://developer.android.com/resources/samples/ContactManager/index.html) मैं यह कोड

showInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     Log.d(TAG, "mShowInvisibleControl changed: " + isChecked); 
     showInvisible = isChecked; 
     populateContactList(); 
    } 
}); 

देख सकता हूं तो एक ऑन चेक किए गए चेंज (कंपाउंड बटन बटन देखें, बूलियन चेक किया गया है) विधि। एक्सएमएल द्वारा ऐसा करने का कोई तरीका है? कोई एंड्रॉइड नहीं है: चेक किए गए चेंज विशेषता, केवल एंड्रॉइड: ऑनक्लिक विशेषता, लेकिन जैसा कि मैंने ऊपर लिखा है, उस विशेषता के नाम में संबंधित विधि नाम होना चाहिए, जो तर्क के रूप में देखें, लेकिन ऊपर दिए गए कोड से मैं समझता हूं कि मेरे पास एक विधि होनी चाहिए कंपाउंडबटन और बुलियन तर्क।

"एक्सएमएल मार्ग" में ऐसा करने का कोई तरीका?

उत्तर

4

मुझे स्पिनर विजेट से इटैम सेलेटेड ईवेंट के साथ एक ही समस्या मिली। स्पष्ट रूप से एंड्रॉइड टीम ने सोचा था कि हमें एक्सक्लिक घटना पर एक्सएमएल करने के लिए पर्याप्त था: एस।

6

आधिकारिक प्रलेखन: https://developer.android.com/guide/topics/ui/controls/checkbox.html

<CheckBox android:id="@+id/checkbox_meat" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/meat" 
    android:onClick="onCheckboxClicked"/> 
<CheckBox android:id="@+id/checkbox_cheese" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/cheese" 
    android:onClick="onCheckboxClicked"/> 
2

अब यह बाध्यकारी पुस्तकालय डेटा के उपयोग के साथ ऐसा करना संभव है। सबसे पहले आपको हैंडलर क्लास बनाने की आवश्यकता है (इस उदाहरण में, मैं इसे मेनएक्टिविटी हैंडलर कहता हूं)। इस हैंडलर वर्ग के अंदर, एक विधि (उदाहरण के लिए नाम Method1 है) इसी कार्यान्वयन फिर अपने लेआउट फ़ाइल में साथ परिभाषित करते हैं, तो आप सिर्फ लागू करने की आवश्यकता:

... 
<data> 
    <variable 
     name="handler" 
     type="com.test.android.testapp.MainActivityHandlers" /> 
</data> 
... 
     <RadioGroup 
     ... 
     android:onCheckedChanged="@{handler.method1}" 
     ... 
     > 

और आप के लिए तैयार हैं। अधिक जानकारी: https://developer.android.com/topic/libraries/data-binding/index.html

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