सबसे पहले: हाँ, मैंने इस विषय पर अन्य सभी सूत्र पढ़े। और न केवल इस साइट से ... (आप देखें, मैं थोड़ा निराश हूं)
उनमें से ज्यादातर एक्सएमएल फ़ाइल में android:id
केवल के बजाय उपयोग करने की सलाह के साथ आते हैं id
। मैंने किया।
दूसरों से, मैंने सीखा, कि View.findViewById
अलग से काम करता है Activity.findViewById
। मैंने उसे भी संभाला।
मेरे में location_layout.xml
, मैं उपयोग करता हूं:
<FrameLayout .... >
<some.package.MyCustomView ... />
<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />
...
</LinearLayout>
</FrameLayout>
अपनी गतिविधि में मैं:
...
setContentView( R.layout.location_layout );
और मेरे कस्टम व्यू क्लास में:
...
TextView tv = (TextView) findViewById( R.id.txtLat );
जो लौटता है null
। ऐसा करने से, मेरी गतिविधि ठीक काम करती है। तो शायद यह अंतर Activity.findViewById
और View.findViewById
मतभेदों के कारण है । इसलिए मैंने स्थानीय रूप से कस्टम्स व्यू कंस्ट्रक्टर को दिए गए संदर्भ को संग्रहीत किया और कोशिश की:
...
TextView tv = (TextView) ((Activity) context).findViewById( R.id.txtLat );
जो लौट आया null
।
फिर, मैंने ViewGroup
इसके बजाय विस्तार करने के लिए अपने कस्टम दृश्य को View
बदल दिया और अपने कस्टम दृश्य के प्रत्यक्ष बच्चे location_layout.xml
होने के लिए बदल दिया TextView
, ताकि एView.findViewById
चाहिए के रूप में काम करना चाहिए। Suprise: यह कुछ भी हल नहीं किया।
तो क्या मैं गलत कर रहा हूँ बिल्ली?
मैं किसी भी टिप्पणी की सराहना करता हूँ।