देखें सीधे कोड पर जाएं।findViewById <include> पर शून्य लौटाता है
गतिविधि संहिता, onCreate विधि
setContentView(R.layout.main);
View main_view = findViewById(R.id.main_view);
View view_flipper = main_view.findViewById(R.id.vf);
View first_tab = view_flipper.findViewById(R.id.prev_pane);
main.xml लेआउट कोड:
<ViewFlipper android:id="@+id/vf"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include android:id="@+id/prev_pane" layout="@layout/vf_inner" />
<include android:id="@+id/cur_pane" layout="@layout/vf_inner" />
<include android:id="@+id/next_pane" layout="@layout/vf_inner" />
</ViewFlipper>
समस्या! मुख्य दृश्य सही ढंग से मिला है, तो ViewFlipper है, फिर भी prev_pane या cur_pane या next_pane नहीं मिला है, एक शून्य सूचक वापस आ गया है। कोई विचार क्यों?
इस गतिविधि को एक इरादे का उपयोग करके एक टैब के माध्यम से बुलाया जाता है। सभी संदर्भ आईडी के सिवाय सही ढंग से हल कर रहे हैं पर
शामिल जब मैं चर का निरीक्षण किया, मैं mChildren
ठीक है, सभी पैन समान हैं, फिर भी उन्हें अलग-अलग सामग्री की आवश्यकता है। इसे कैसे प्राप्त किया जा सकता है? तथ्य यह है कि सभी शामिल विचारों में एक छवि और एक आईडी के साथ एक टेक्स्टव्यू शामिल है। छवि स्थैतिक बनी हुई है, फिर भी सभी पैन के लिए टेक्स्ट अलग है। – Artis
ओह, मैं देखता हूं। मेरा मानना है कि एक्सएमएल उस संबंध में सीमित है * (कम से कम मुझे एटीएम नहीं है) *। हालांकि आप इसे कोड से बना सकते हैं। लेआउट inflater सेवा का उपयोग करके लेआउट के तीन उदाहरणों को फुलाएं, फुले हुए दृश्यों पर 'setId() 'का उपयोग करें। फिर 'findViewById() 'के माध्यम से ViewFlipper खोजें और' ViewFlipper.addView() 'के माध्यम से तीन लेआउट जोड़ें। –
ध्यान दें कि आप व्यूफ्लिपर के बच्चों को ['ViewFlipper.getChildAt (अनुक्रमणिका)'] (http://developer.android.com/reference/android/view/ViewGroup.html#getChildAt (int) के माध्यम से संदर्भित कर सकते हैं) उनकी आईडी के बजाय। जैसे जैसे: 'first_tab = view_flipper.getChildAt (0) 'देखें। –