सबसे पहले: हाँ, मैंने इस विषय पर अन्य सभी सूत्र पढ़े। और न केवल इस साइट से ... (आप देखें, मैं थोड़ा निराश हूं)
उनमें से ज्यादातर एक्सएमएल फ़ाइल में 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: यह कुछ भी हल नहीं किया।
तो क्या मैं गलत कर रहा हूँ बिल्ली?
मैं किसी भी टिप्पणी की सराहना करता हूँ।