मैं Android databinding library के साथ खेल रहा हूं और मैं इसे शामिल लेआउट के साथ उपयोग करने का प्रयास कर रहा हूं।एंड्रॉइड डाटाबेसिंग के साथ शामिल दृश्य कैसे प्राप्त करें?
कोड मैं इस तरह है:
activity_main.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/linearLayout">
<include
layout="@layout/view" />
</LinearLayout>
</layout>
view.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/myView">
</View>
MainActivity.java
public MainActivity extends AppCompatActivity{
private ActivityMainBinding mBinding;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
LinearLayout layout = mBinding.linearLayout; // this field is visible
View myView = mBinding.myView // THIS FIELD IS NOT VISIBLE
}
}
जैसा कि मैंने लिखा है टिप्पणियों में वी iew myView जिसे "शामिल" लेआउट में घोषित किया गया है दिखाई नहीं दे रहा है। अगर मैं view.xml में वास्तविक कोड को प्रतिस्थापित करता हूं तो mBinding.myView दिखाई देता है, तो कारण तब शामिल होता है।
आधिकारिक दस्तावेज राज्यों ही नहीं
"डेटा बाइंडिंग का समर्थन नहीं करता किसी मर्ज तत्व का एक सीधा बच्चे के रूप में शामिल हैं।" लेकिन मेरे मामले में देखें LinearLayout का एक बच्चा है, यह प्रत्यक्ष बच्चा नहीं है ..
कोई संकेत?
View myView = mBinding.included;
अपने शामिल लेआउट एक बाध्यकारी लेआउट, को शामिल किया जाता है तो हो जाएगा:
<include android:id="@+id/included"
layout="@layout/view" />
अब आप दृश्य शामिल पहुँच सकते हैं:
मैं के लिए लेआउट के लिए एक ही है लेकिन एक ही नाम के साथ दो लेआउट के लिए, यह कैसे कर सकते टैबलेट केस मेरा मतलब है, जब मेरे पास 'लेआउट/लेआउट.एक्सएमएल' और' लेआउट-sw600dp/layout.xml' नामक दो लेआउट हैं, लेकिन दूसरे में टुकड़े के लिए कंटेनर 'फ्रेमलाउट' है, यह अंतिम बाध्यकारी जेनरेट क्लास में दिखाई नहीं देता है। अग्रिम धन्यवाद। – epool
यदि आपके पास एक लेआउट में कोई दृश्य है, लेकिन दोनों नहीं, तो आपको कक्षा में दृश्य देखना चाहिए, लेकिन जब एक लेआउट बाध्य होता है तो यह शून्य हो जाएगा। उन गुणों को आईडी देना सुनिश्चित करें जिन्हें आप गुणों के रूप में रखना चाहते हैं। –