আমি কি অ্যান্ড্রয়েডের বিভিন্ন লেআউটে একই আইডি ব্যবহার করতে পারি?


90

আমি অ্যান্ড্রয়েড বিকাশে নতুন। ইমেজগুলির জন্য এবং TextViewsবিভিন্ন Layoutএক্সএমএল ফাইলগুলিতে একই আইডি ব্যবহার করা ভাল কি ?

যখন গ্রহনটি আমার জন্য তাদের অটো-তালিকা করে, এটি প্রকল্পের সমস্ত লেআউট ভেরিয়েবল তালিকাভুক্ত করে, তাই এটির সংঘর্ষ হবে কি? এখনও অবধি আমি আলাদা আলাদা লেআউটে একই আইডি ব্যবহার করতে কোনও সমস্যা লক্ষ্য করিনি, তবে আমি দীর্ঘকাল ধরেই উদ্বিগ্ন।


সম্পর্কিত পোস্ট - একই আইডি সহ দুটি দর্শন
RBT

@ পাভেল আপনার এখনও বাধাগুলি সামঞ্জস্য করতে আইডির প্রয়োজন হবে।
সদ্দা হুসেন

উত্তর:


96

আপনি বিভিন্ন লেআউটের জন্য বিভিন্ন আইডি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। দীর্ঘকালীন সময়ে, যখন আপনার অনেকগুলি লেআউট থাকবে এবং প্রচুর আইডির জন্য এটি তাদের পার্থক্য করা খুব জটিল হয়ে উঠবে।

আমি সাধারণত আমার আইডির নাম রাখি: layoutName_elementId

আমি যে আইডিটি সন্ধান করছি এটি সহজেই সন্ধান করার জন্য এটি কাজ করে, বিশেষত স্বতঃপূরণ ব্যবহার করার সময় (আমি কী লেআউটে কাজ করছি তা জানি তবে আমি আইডিটি সত্যই জানি না; এই ক্ষেত্রে আমার নামকরণের কৌশলটি সহ, আমি কেবল বিন্যাসের নামটি টাইপ করুন এবং এটি সেই বিন্যাসের সমস্ত আইডিতে নিয়ে আসে)।

লেআউট এবং আইডির আরও তথ্য এখানে পাওয়া যাবে

শুভ কোডিং,


4
আপনার ok_buttonপ্রতিটি ক্রিয়াকলাপে বলার জন্য সমস্যাটি কী ? আপনি যে চ্যাটটি সন্ধান করছেন তা যদি জানা থাকে তবে অটোকম্প্লিপশনটি আরও পরিষ্কার।
ড্যান চালটিয়েল 16'15

132

সংক্ষিপ্ত উত্তর: হ্যাঁ, আপনি পারেন।

দীর্ঘ উত্তর: আপনি এটি করতে পারেন কারণ যখনই আপনি আপনার বিন্যাসের কোনও অংশের জন্য একটি রেফারেন্স পেতে FindViewById () ব্যবহার করেন, পদ্ধতিটি কেবলমাত্র স্ফীত লেআউটে সেই দর্শনটির সন্ধান করে। সুতরাং আপনার যদি অন্য একটি লেআউটে একই আইডির সাথে অন্য ভিউ হয়, অ্যান্ড্রয়েড সেখানে এটি সন্ধান করবে না।


15
আপনি কি আরও দীর্ঘ উত্তর দিতে পারেন? কারণ R.id.layout_id একটি স্ট্যাটিক পূর্ণসংখ্যা এবং সংকলনের সময় প্রাক-নির্ধারিত তাই FindViewById () বর্তমানে স্ফীত লেআউটটি জানতে পারবে না।
ক্লো

22
এই প্রশ্নটি জুড়ে অন্য কারও পক্ষে, আমি ক্লোর অনুরোধটির উত্তর দিতে চেয়েছিলাম। আইডি প্রতিটি দেখার জন্য একই হবে, তবে একই ক্রিয়াকলাপে দু'বার প্রদর্শিত হবে না। রূপক হিসাবে বিবেচনা করুন, যদি আমি আপনাকে একটি কাগজের স্ট্যাক দিয়েছি, সমস্তগুলিতে একগুচ্ছ সংখ্যা। এই কাগজের শিটগুলির বেশ কয়েকটিতে তাদের উপর 4 নম্বর লেখা রয়েছে। আপনি একটি চাদরের দিকে তাকিয়ে আছেন এবং আমি আপনাকে ৪ টি বৃত্তাকারে যেতে বলি This এটি সহজ। এখন আপনি এটির সাথে একটি 4 দিয়ে অন্য শীটটি দেখুন। আপনি এটি খুঁজতে এবং বৃত্তও পেতে পারেন। সংখ্যাটি আগে থেকেই সংজ্ঞায়িত হয় তা বিবেচ্য নয়।
টেড ক্যানেলনগো

6
টেডের মন্তব্যের সাথে আমি একমত নই, আপনি একই আইডিতে একই আইডির সাথে দুটি ক্রিয়াকলাপ একই সময়ে চলতে পারেন। আমার কেবলমাত্র একটি অ্যাপ্লিকেশনটিতে সমস্যা ছিল, আমি মূল ক্রিয়াকলাপে একই সময়ে দুটি ভিন্ন ভিউপাগার ব্যবহার করছিলাম। যখন আমি বর্তমানে আইডি দিয়ে প্রদর্শিত ভিউপেজারটি পুনরুদ্ধার করার চেষ্টা করেছি, তখন এটি ব্যাকগ্রাউন্ডে চলমান অন্যটিকে পুনরুদ্ধার করেছে। আমি কেবল দুটি আইডি অনন্য করে সমস্যাটি সমাধান করেছি।
ইওন হারকিউট

8
@ ইয়ুয়ানহরকিউট আমি বিশ্বাস করি যে এটি উভয়ই একই শীটে ছিল (ক্রিয়াকলাপ)
নাহিল

22

বিকাশকারী এপিআই গাইড অনুসারে:

একটি আইডি পুরো গাছ জুড়ে অনন্য হওয়া উচিত নয়, তবে আপনি যে গাছটি অনুসন্ধান করছেন তার অংশের মধ্যে এটি অনন্য হওয়া উচিত (যা প্রায়শই পুরো গাছ হতে পারে, তাই সম্ভব হলে সম্পূর্ণ অনন্য হওয়া ভাল)।

সুতরাং সংক্ষিপ্ত উত্তরটি হ'ল এটি বাধ্যতামূলক নয় তবে সম্ভাব্য বিবাদগুলি এড়াতে এটি একটি ভাল অনুশীলন।


4
আমি একবার দুর্ঘটনাক্রমে একই আইডি তৈরি করেছি। পরে তাদের পুনঃনামকরণ করা অনেক কাজ ছিল কারণ সমস্ত দৃষ্টান্ত পুনরায় নামকরণ করা হয়েছিল। এর অর্থ একবার আপনার আইডি দ্বন্দ্ব হয়ে গেলে আপনি ভুল হয়ে যান। সবকিছু আবার আলাদা করা খুব কঠিন হবে।
t3chb0t

বাস্তবের জন্য @ t3chb0t! এমনকি যদি আপনি "স্থানীয় কেবল" পরীক্ষা করেন তবে অ্যান্ড্রয়েড স্টুডিও সমস্ত দৃষ্টান্তের নাম পরিবর্তন করে। এটি একেবারে হাস্যকর।
জন গ্লেন

15

প্রস্তাবিত নয়, কারণ ভবিষ্যতে আপনার যদি রিফ্যাক্টর প্রয়োজন হয় view id, অ্যান্ড্রয়েড স্টুডিওগুলি এটি সমস্ত XMLফাইল এবং ক্লাসে রিফ্যাক্টর করবে এবং আপনি সমস্যার মধ্যে পড়বেন ।

তবে এমন কিছু ক্ষেত্রেও রয়েছে যখন আপনার একই ব্যবহার প্রয়োজন idযেমন উদাহরণস্বরূপ আপনার যদি কিছু বিমূর্ততা থাকে এবং আপনি একাধিক বিন্যাস পুনরায় ব্যবহার করেন।

আপনার প্রকল্পে যদি আপনার viewsসাথে একাধিক থাকে id'sএবং আপনার চুল্লি প্রয়োজন হয়, ম্যানুয়ালি এটি করুন, আইডিই ফাংশনে বিল্ড ব্যবহার করবেন না, বিন্যাসের idঅভ্যন্তরে টার্গেট ভিউতে পরিবর্তন করুন এবং XMLতারপরে বিন্যাসের ভিতরে লাল ত্রুটিটি ঠিক করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.