প্রথমত: হ্যাঁ, আমি এই বিষয়ে অন্যান্য সমস্ত থ্রেড পড়েছি। এবং কেবল এই সাইট থেকে নয় ... (আপনি দেখুন, আমি কিছুটা হতাশ)
তাদের বেশিরভাগই এক্সএমএল ফাইলের 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
হিসাবে অনুমিত কাজ করা উচিত। তত্ত্বাবধান: এটি কোনও সমাধান করেনি।
তাহলে আমি কী ভুল করছি?
আমি কোন মন্তব্য প্রশংসা করব।