বর্তমানে আমি যে অ্যান্ড্রয়েড অ্যাপটি বিকাশ করছি তার একটি মূল ক্রিয়াকলাপ রয়েছে যা বেশ বড় হয়েছে। এটি মূলত কারণ এতে TabWidget
3 টি ট্যাব রয়েছে। প্রতিটি ট্যাবে বেশ কয়েকটি উপাদান রয়েছে। ক্রিয়াকলাপে একবারে all সমস্ত উপাদান নিয়ন্ত্রণ করতে হবে। সুতরাং আমি মনে করি আপনি ভাবতে পারেন যে এই ক্রিয়াকলাপটির মতো 20 টি ক্ষেত্র রয়েছে (প্রায় প্রতিটি উপাদানগুলির জন্য একটি ক্ষেত্র)। এছাড়াও এতে প্রচুর যুক্তি রয়েছে (শ্রোতাদের ক্লিক করুন, তালিকা পূরণের জন্য যুক্তি ক্লিক করুন)।
আমি সাধারণত উপাদান ভিত্তিক ফ্রেমওয়ার্কগুলিতে যা করি তা হ'ল সবকিছুকে কাস্টম উপাদানগুলিতে বিভক্ত করা। প্রতিটি কাস্টম উপাদান তখন একটি পরিষ্কার দায়িত্ব থাকবে। এতে এতে নিজস্ব উপাদানগুলির সেট এবং সেই উপাদানটির সাথে সম্পর্কিত অন্যান্য সমস্ত যুক্তি রয়েছে contain
এটি কীভাবে করা যায় তা আমি সনাক্ত করার চেষ্টা করেছি এবং অ্যান্ড্রয়েড ডকুমেন্টেশনে আমি তাদের একটি "যৌগিক নিয়ন্ত্রণ" বলতে পছন্দ করি এমন কিছু পেয়েছি। (দেখুন http://developer.android.com/guide/topics/ui/custom-components.html# কম্পাউন্ড এবং "যৌগিক নিয়ন্ত্রণ" বিভাগে স্ক্রোল করুন) আমি একটি এক্সএমএল ফাইলের উপর ভিত্তি করে এমন একটি উপাদান তৈরি করতে চাই কাঠামো দেখুন।
ডকুমেন্টেশনে এটি বলে:
মনে রাখবেন যে কোনও ক্রিয়াকলাপের মতো আপনিও অন্তর্ভুক্ত উপাদানগুলি তৈরি করার জন্য ঘোষণামূলক (এক্সএমএল-ভিত্তিক) পদ্ধতির ব্যবহার করতে পারেন, বা আপনার কোড থেকে প্রোগ্রামিয়ালি এগুলি বাসাতে পারেন।
ঠিক আছে, এটি একটি ভাল খবর! এক্সএমএল-ভিত্তিক পদ্ধতিটি আমি যা চাই ঠিক তাই! তবে এটি কীভাবে করবেন তা বলে না, এটি "কার্যকলাপের সাথে যেমন হয়" তবে ... তবে আমি একটি ক্রিয়াকলাপে যা করি তা setContentView(...)
এক্সএমএল থেকে মতামত উত্সাহিত করার আহ্বান । আপনি যদি সাবক্লাসের উদাহরণ হিসাবে ব্যবহার করেন তবে সেই পদ্ধতিটি উপলভ্য নয় LinearLayout
।
সুতরাং আমি এক্সএমএলটিকে ম্যানুয়ালি এইভাবে স্ফীত করার চেষ্টা করেছি:
public class MyCompoundComponent extends LinearLayout {
public MyCompoundComponent(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.my_layout, this);
}
}
এটি এক্সএমএল যে আমি লোড করছি LinearLayout
তা মূল উপাদান হিসাবে ঘোষণা করেছে তা বাদ দিয়ে এটি কাজ করে । এর ফলে স্ফীতিত LinearLayout
হওয়া বাচ্চা হওয়ার MyCompoundComponent
ফলে ইতিমধ্যে এটি নিজেই একটি LinearLayout
!! সুতরাং এখন আমাদের মধ্যে একটি অপ্রয়োজনীয় লিনিয়ারলআউট এবং MyCompoundComponent
এটির দৃষ্টিভঙ্গি আসলে দরকার।
অপ্রয়োজনীয় LinearLayout
তাত্ক্ষণিক কাজ এড়ানো থেকে দয়া করে কেউ আমাকে আরও কাছে যাওয়ার আরও ভাল উপায় সরবরাহ করতে পারেন ?