অ্যান্ড্রয়েড id
ওভারভিউ
একটি অ্যান্ড্রয়েড id
হল একটি পূর্ণসংখ্যা যা সাধারণত দর্শন সনাক্ত করতে ব্যবহৃত হয়; এই id
এক্সএমএল (যখন সম্ভব নয়) এবং কোড মাধ্যমে মাধ্যমে নির্ধারিত করা যেতে পারে (প্রোগ্রামেটিক্যালি।) id
জন্য XML-সংজ্ঞায়িত রেফারেন্স পাবার জন্য সর্বাধিক কার্যকরী View
গুলি একটি দ্বারা উত্পন্ন Inflater
(যেমন ব্যবহার করে যেমন setContentView
।)
id
মাধ্যমে বরাদ্দ করুনXML
- আপনার ভিউতে
android:id="@+id/
কোনও নামের একটি বৈশিষ্ট্য যুক্ত করুন "
।
- যখন আপনার অ্যাপ্লিকেশনটি নির্মিত হয়, কোডগুলিতে ব্যবহারের জন্য
android:id
এটিকে একটি অনন্য দেওয়া হবে int
।
- আপনার অবগতির
android:id
এর int
"ব্যবহার কোডে মান R.id.
somename" (কার্যকরভাবে একটি ধ্রুবক।)
- এটি
int
বিল্ড থেকে বিল্ড এ পরিবর্তিত হতে পারে তাই প্যাকেজ.নাম / থেকে কোনও আইডি অনুলিপি করবেন না , কেবল "কিছু নাম" ব্যবহার করুন ।gen/
R.java
R.id.
- (এছাড়াও, এক্সএমএল এ
id
নির্ধারিত একটি এটিকে উত্পন্ন Preference
করার সময় ব্যবহার করা হয় না ))Preference
View
id
কোডের মাধ্যমে বরাদ্দ করুন (প্রোগ্রাম্যাটিকভাবে)
- Int
id
ব্যবহার করে ম্যানুয়ালি সেট করুনsomeView.setId(
);
int
অবশ্যই ধনাত্মক হবে, কিন্তু অন্যথায় এটা যাহা চান হতে পারে arbitrary- হয় (পড়া এই ভয়ঙ্কর রাখা।)
- উদাহরণস্বরূপ, যদি আইটেমগুলি উপস্থাপন করে এমন বেশ কয়েকটি ভিউ তৈরি করে এবং সংখ্যা নির্ধারণ করে, আপনি তাদের আইটেম নম্বরটি ব্যবহার করতে পারেন।
স্বতন্ত্রতা id
গুলি
XML
-সাইন করা id
গুলি অনন্য হবে।
- কোড-নির্ধারিত
id
গুলি অনন্য হতে হবে না
- কোড-নির্ধারিত
id
এস - এর সাথে তাত্ত্বিকভাবে (তাত্ত্বিকভাবে) বিরোধী হতে XML
পারে id
।
id
সঠিকভাবে জিজ্ঞাসা করা থাকলে (পড়তে থাকুন) এই বিবাদমানগুলির পক্ষে কিছু আসে যায় না ।
কখন (এবং কেন) দ্বন্দ্বপূর্ণ id
বিষয়গুলি বিবেচনা করে না
findViewById(int)
আপনি যে ভিউটি নির্দিষ্ট করেছেন তার থেকে ভিউ হায়ারার্কির মাধ্যমে গভীরতার-প্রথম পুনরাবৃত্তির সাথে পুনরাবৃত্ত হবে এবং View
এটি কোনও মিলের সাথে খুঁজে পাওয়া প্রথমটি ফিরিয়ে দেবে id
।
- শ্রেণিবিন্যাসে
id
কোনও এক্সএমএল-সংজ্ঞায়িত হওয়ার আগে যতক্ষণ কোনও কোড-নির্ধারিত অ্যাসাইন করা থাকে না, ততক্ষণ সর্বদা এক্সএমএল-সংজ্ঞায়িত ভিউটি ফিরিয়ে দেবে তাই 'ডি।id
findViewById(R.id.somename)
id
পরিবর্তনশীল দৃশ্যগুলি এবং বরাদ্দ করা তৈরি করা হচ্ছে ID
গুলি
আপনি যদি আপনার মতামতের রেফারেন্সগুলি আশেপাশে রাখতে চান , তবে সেগুলি দিয়ে তাত্ক্ষণিকভাবে getApplicationContext()
নিশ্চিত হয়ে নিন এবং প্রতিটি রেফারেন্স নাল-ইন করতে ভুলবেন না onDestroy
। স্পষ্টতই ফুটো করা Activity
(ধ্বংস হয়ে যাওয়ার পরে এটির উপর ঝুলানো) অপব্যয়ী .. :)
android:id
কোডে ব্যবহারের জন্য একটি এক্সএমএল সংরক্ষণ করুন
API 17 প্রবর্তিত View.generateViewId()
যা একটি অনন্য আইডি উত্পন্ন করে। (এটিকে নির্দেশ করার জন্য পরিবর্তন-গ্রহণ-পরিবর্তনগুলি ধন্যবাদ)) *
যদি আপনার ViewGroup
এক্সএমএল এর মাধ্যমে সংজ্ঞায়িত না করা যায় (বা আপনি এটি হতে চান না) তবে এটি অনন্য থেকে যায় তা নিশ্চিত করতে আপনি XML এর মাধ্যমে আইডিটি সংরক্ষণ করতে পারেন:
এখানে মান / ids.xML একটি কাস্টম সংজ্ঞায়িত করে id
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="reservedNamedId" type="id"/>
</resources>
তারপরে একবার ভিউ গ্রুপ বা ভিউ তৈরি হয়ে গেলে আপনি কাস্টম আইডি সংযুক্ত করতে পারেন
myViewGroup.setId(R.id.reservedNamedId);
বিরোধপূর্ণ id
উদাহরণ
অস্পষ্ট উদাহরণের মাধ্যমে স্বচ্ছতার জন্য, id
পর্দার আড়ালে কোনও বিরোধ দেখা দিলে কী ঘটে তা পরীক্ষা করে দেখি ।
বিন্যাস / mylayout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/placeholder"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
কোনও সংঘাতের অনুকরণের জন্য, আমাদের সর্বশেষ বিল্ডকে নির্ধারিত R.id.placeholder
( @+id/placeholder
) এর একটি int
মান বলতে দিন 12
..
এরপরে, মাইএকটিভিটি.জভা প্রোগ্রাম যুক্তভাবে কিছু সংখ্যক ভিউ সংজ্ঞায়িত করে (কোডের মাধ্যমে):
int placeholderId = R.id.placeholder; // placeholderId==12
// returns *placeholder* which has id==12:
ViewGroup placeholder = (ViewGroup)this.findViewById(placeholderId);
for (int i=0; i<20; i++){
TextView tv = new TextView(this.getApplicationContext());
// One new TextView will also be assigned an id==12:
tv.setId(i);
placeholder.addView(tv);
}
সুতরাং placeholder
এবং আমাদের নতুন TextView
দুটির মধ্যে একটির id
12 টি রয়েছে! তবে যদি আমরা স্থানধারকের শিশু দৃষ্টিভঙ্গিগুলি জিজ্ঞাসা করি তবে এটি আসলেই কোনও সমস্যা নয়:
// Will return a generated TextView:
placeholder.findViewById(12);
// Whereas this will return the ViewGroup *placeholder*;
// as long as its R.id remains 12:
Activity.this.findViewById(12);
* এত খারাপ না