অ্যান্ড্রয়েডে "@ আইডি /" এবং "@ + আইডি /" এর মধ্যে পার্থক্য


456

@id/এবং এর মধ্যে পার্থক্য কী @+id/?

ইন @+id/যোগ চিহ্ন +নির্দেশ করে একটি নতুন রিসোর্স নাম তৈরি করুন এবং এর মধ্যে যোগ করার জন্যR.java ফাইল কিন্তু কি সম্পর্কে @id/? এর ডকুমেন্টেশন থেকে ID: অ্যান্ড্রয়েড রিসোর্সটি উল্লেখ করার সময় ID, আপনাকে প্লাস চিহ্নের প্রয়োজন হবে না, তবে অ্যান্ড্রয়েড প্যাকেজ নেমস্পেস অবশ্যই যুক্ত করতে হবে:

android:id="@android:id/list"

তবে নীচের চিত্রটিতে Eclipse কোনও ধরণের পরামর্শ দেয় না @android:id/

@ / Id এবং @ + / id এর জন্য প্রস্তাবনা দেখানো চিত্র

হয় @id/ এবং @android:id/একই?


অ্যান্ড্রয়েড ডক্স থেকে: (এটি খুঁজে পেতে চিরকালের জন্য নিয়ে গিয়েছিলাম এবং আমি কোনও সম্পর্কযুক্ত সমস্যা
খুঁজছিলাম

উত্তর:


351

আপনি উল্লেখ করেন Android resources, যা ইতিমধ্যে অ্যান্ড্রয়েড সিস্টেমে সংজ্ঞায়িত হয়েছে, @android:id/..আপনার প্রকল্পে সংজ্ঞায়িত / তৈরি হওয়া সংস্থানগুলি অ্যাক্সেস করার সাথে সাথে আপনি ব্যবহার করেন@id/..

অধিক তথ্য

আড্ডায় আপনার স্পষ্টতা অনুসারে আপনি বলেছিলেন যে আপনার মতো সমস্যা আছে:

আমরা android:id="@id/layout_item_id"এটি ব্যবহার করে কাজ করে না। পরিবর্তে @+id/কাজ করে তাই এখানে পার্থক্য কি? এবং এটি আমার আসল প্রশ্ন ছিল।

ঠিক আছে, এটি প্রসঙ্গে নির্ভর করে, যখন আপনি এক্সএমএল বৈশিষ্ট্যটি ব্যবহার করছেন android:id, তারপরে আপনি একটি নতুন আইডি নির্দিষ্ট করছেন, এবং পার্সারকে (বা বিল্ডারকে কল করুন) একটি নতুন এন্ট্রি তৈরি করার জন্য নির্দেশ দিচ্ছেন R.java, সুতরাং আপনাকে অবশ্যই এটি করতে হবে একটি +চিহ্ন অন্তর্ভুক্ত ।

অন্য ক্ষেত্রে যেমন android:layout_below="@id/myTextView", আপনি ইতিমধ্যে তৈরি করা একটি আইডি উল্লেখ করছেন, সুতরাং পার্সার এটি ইতিমধ্যে তৈরি আইডিতে লিঙ্ক করেছে R.java

আরও তথ্য

যেমন আপনি আপনার আড্ডায় বলেছিলেন, নোট করুন যে android:layout_below="@id/myTextView"কোনও উপাদানটিকে myTextViewআপনি ব্যবহার করছেন এমন উপাদানটির পরে লেখা থাকলে তা আইডির সাথে স্বীকৃতি দেয় না।


142
"আরও তথ্য আবার" সম্পর্কিত: আপনি অবস্থানটির সাথে অবস্থানটি সংজ্ঞায়িত করতে পারেন android:layout_below="@+id/myTextView"এবং তার সাথে উপাদানটি নিজেই সংজ্ঞায়িত করতে পারেন android:id="@id/myTextView"
কাওয়

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

ধন্যবাদ! আমার একই সমস্যা ছিল এবং ডকুমেন্টেশন এই বিষয়টি সম্পর্কে খুব বেশি কিছু বলে না। তবে এটি সুস্পষ্ট: আমাদের এখানে যে সমস্যাটি ছিল তা ঘন ঘন সমস্যা নয় ...
কাও

7
আমি সর্বদা @ + আইডি / এন্ড্রয়েড: আইডি এবং অ্যান্ড্রয়েড: লেআউট_বলো ব্যবহার করি, এটি কি সমস্যা?
মেলানকে

4
@melanke: ফেলে +মধ্যে layout_belowসেইসাথে android:idসত্যিই জরিমানা, যেহেতু The '+' means to create the symbol if it doesn't already existউত্তর হিসাবে তন্ময় মন্ডল তার চমৎকার উল্লেখ (এখনও রেটপ্রাপ্ত)। যে কারণে, কোনও নেতিবাচক রানটাইম প্রভাব নেই (সম্ভবত comp হলেও সংকলনের সময়টিতে অল্প পরিমাণে ছোট বৃদ্ধি)।
লেবীয়

86

আপনার সংস্থান আইডির তালিকায় আইডি যুক্ত করতে + চিহ্নটি একটি শর্ট কাট। অন্যথায় আপনার এগুলির মতো একটি এক্সএমএল ফাইল থাকা দরকার

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="my_logo" type="id"/>
</resources>

1
@ শ্যুইজ: এবং কীভাবে আমরা আমাদের লেআউটে এটি ব্যবহার করতে পারি?
বিকাশ পাটিদার

7
আমার উত্তরে আপনার সংস্থান ফাইলটি আছে তা কল্পনা করুন, তবে আপনার বিন্যাসে আপনি থাকতে পারেন <View android:id="@id/my_logo"/> যদি আমার উপরে সংজ্ঞায়িত সংস্থান ফাইলটি না থাকে তবে আপনার এটি <View android:id="@+id/my_logo"/> নোটের মতো করতে হবে : আপনাকে কেবল একবার + আইডি করতে হবে সুতরাং আপনি যদি অন্য কোনও লেআউট ফাইলে <অ্যান্ড্রয়েড দেখুন: id = "+ id / my_logo" /> করেন তবে পরের বার আপনি যখন কোনও লেআউটে একই আইডি ব্যবহার করবেন তখন আপনাকে '+' অক্ষর অন্তর্ভুক্ত করতে হবে না।
নাথান শোয়ারম্যান

@ শ্যুইজ: ঠিক আছে এটি দরকারী তবে আমাদের সেই ফাইলটি কোথায় রাখা উচিত res/drawable/বা res/layout/বা res/values/সেই ফাইলটির নাম কী হবে? আপনার যদি এই সম্পর্কিত কোনও দরকারী লিঙ্ক থাকে তবে দয়া করে এখানে পোস্ট করুন।
বিকাশ পাটিদার

1
আপনার সংস্থাগুলির নামকরণ ইত্যাদি সম্পর্কে আপনার যা জানা দরকার তা এখানে। আপনি ফাইলটি পুনরায় / মান /গুলিতে রাখবেন এবং কনভেনশনটি এর আইডির নাম রাখবে তবে আপনি যা খুশি তাই কল করতে পারেন। বিকাশকারী.অ্যান্ড্রয়েড / গাইড
টপিক্স / রিসোর্স /

46

কখনও কখনও আপনি আপনার লেআউট ফাইলগুলিতে রেফারেন্সগুলি দেখতে পান যেমন:

<listview id="@+id/android:list">

এবং

<listview id="@android:id/list">

পার্থক্য কি?

.. আপনি খুশি আমি জিজ্ঞাসা ☺

@+id/fooএর অর্থ আপনি আপনার অ্যাপ্লিকেশনটির নেমস্পেসে ফু নামে একটি আইডি তৈরি করছেন। আপনি এটি ব্যবহার করে উল্লেখ করতে পারেন @id/foo@android:id/fooএর অর্থ আপনি অ্যান্ড্রয়েড নেমস্পেসে সংজ্ঞায়িত একটি আইডি উল্লেখ করছেন।

'+' এর অর্থ চিহ্নটি ইতিমধ্যে উপস্থিত না থাকলে তৈরি করা। অ্যান্ড্রয়েড: চিহ্নগুলি উল্লেখ করার সময় আপনার এটির প্রয়োজন হবে না (এবং এটি ব্যবহার করা উচিত নয়) কারণ এটি ইতিমধ্যে আপনার জন্য প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত করা হয়েছে এবং যাইহোক আপনি সেই নামস্থানে নিজের তৈরি করতে পারবেন না।

এই নেমস্পেসটি ফ্রেমওয়ার্কের নামস্থান। উদাহরণস্বরূপ, আপনার ব্যবহার করা উচিত @android:id/listকারণ এই আইডিটি ফ্রেমওয়ার্কটি প্রত্যাশা করে .. (ফ্রেমওয়ার্কটি অ্যান্ড্রয়েড নেমস্পেসের আইডির সম্পর্কে কেবল জানতে পারে))

এই উত্স থেকে সম্পূর্ণ অনুলিপি করা হয়েছে


6
Whoosh !! সিটিআরএল + সি সম্পূর্ণ করুন সিটিআরএল + ভি। আপনি খুব মূল পোস্টে একটি রেফারেন্স রেখেছিলেন বলে আনন্দিত। এটা কি আপনার ব্লগ?
আমান আলম

আমি যদি 1 ম লেআউটে @ + আইডি / মাইবার বাটন টাইপের বোতামে ঘোষণা করে থাকি, তবে ২ য় লেআউটে কেবল @ আইডি / মাইবুটনের মতো ব্যবহৃত হলে নতুন উদাহরণ তৈরি করার দরকার নেই। এটা কি ঠিক ?
হিরেন দাবি

39

সংক্ষেপে

android:id="@+id/my_button"

+ আইডি প্লাস সাইন অ্যান্ড্রয়েডকে রিসোর্সে নতুন আইডি যুক্ত করতে বা তৈরি করতে বলে।

যখন

android:layout_below="@id/my_button"

এটি কেবল ইতিমধ্যে উত্পন্ন আইডি উল্লেখ করতে সহায়তা করে ..


9

+আপনি প্রথমবারের জন্য কোনও সংস্থান আইডি সংজ্ঞায়িত করার সময় কেবলমাত্র উত্সের ধরণের আগে চিহ্ন চিহ্ন ( ) প্রয়োজন। আপনি যখন অ্যাপটি সংকলন করেন, এসডিকে সরঞ্জামগুলি আইডিটির নামটি ব্যবহার করে আপনার প্রকল্পের R.javaফাইলে একটি নতুন সংস্থান আইডি তৈরি করে যা EditTextউপাদানটিকে বোঝায় । রিসোর্স আইডি একবার এইভাবে ঘোষিত হওয়ার সাথে সাথে আইডির অন্যান্য রেফারেন্সগুলিতে প্লাস চিহ্নের প্রয়োজন হয় না। নতুন রিসোর্স আইডি নির্দিষ্ট করার সময় এবং স্ট্রিংস বা লেআউটগুলির মতো কংক্রিট সংস্থার জন্য প্রয়োজন না হলে প্লাস চিহ্নটি ব্যবহার করা প্রয়োজনীয়। রিসোর্স অবজেক্ট সম্পর্কে আরও তথ্যের জন্য সাইডবক্স দেখুন।

থেকে: https://developer.android.com/training/basics/firstapp/building-ui.html



6

থেকে বিকাশকারী গাইড :

android:id="@+id/my_button"

@স্ট্রিংয়ের শুরুতে -এ-সিম্বল ( ) নির্দেশ করে যে এক্সএমএল পার্সারটি বাকী আইডি স্ট্রিংকে বিশ্লেষণ ও প্রসারিত করতে হবে এবং এটি আইডি সংস্থান হিসাবে চিহ্নিত করতে পারে identify প্লাস-সিম্বল ( +) এর অর্থ হ'ল এটি একটি নতুন সংস্থার নাম যা অবশ্যই তৈরি করা উচিত এবং আমাদের সংস্থানগুলিতে যুক্ত করতে হবে ( R.javaফাইলটিতে)। আরও অনেক আইডি সংস্থান রয়েছে যা অ্যান্ড্রয়েড কাঠামোর দ্বারা সরবরাহ করা হয়। অ্যান্ড্রয়েড রিসোর্স আইডি উল্লেখ করার সময় আপনার প্লাস-সিম্বলের প্রয়োজন হবে না, তবে অবশ্যই androidপ্যাকেজের নাম স্থানটি যুক্ত করতে হবে :

android:id="@android:id/empty"


4

Eclipse এর সাথে একটি ত্রুটি রয়েছে যেখানে কখনও কখনও আপনি কেবল নতুন তৈরি @+id/..করে থাকেন, তবে প্রকল্পটি পরিষ্কার-নির্মাণের পরেও এটি আর. জাভা ফাইলে তত্ক্ষণাত যুক্ত করা হবে না। সমাধানটি হল Eclipse পুনরায় চালু করা।

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


3
কেন আমি অ্যান্ড্রয়েড স্টুডিওতে সরে এসেছি এবং কখনই পিছনে ফিরে তাকাতে হয়নি তার একটি কারণ :) (আমি জানি আপনি উত্তরটি লেখার সময় এটি এখনও ছিল না)
কনরাড মোরাওস্কি

4

অ্যান্ড্রয়েড এমন কিছু ফাইল ব্যবহার করে যা সংস্থানগুলি বলা হয় যেখানে এক্সএমএল ফাইলগুলির জন্য মান সংরক্ষণ করা হয়।

এখন আপনি যখন কোনও এক্সএমএল অবজেক্টের জন্য @ আইডি / ব্যবহার করেন, এটি একটি আইডি উল্লেখ করার চেষ্টা করছে যা মান ফাইলগুলিতে ইতিমধ্যে নিবন্ধিত হয়েছে। অন্যদিকে, আপনি যখন @ + আইডি ব্যবহার করেন / এটি '+' চিহ্ন দ্বারা উল্লিখিত মান ফাইলগুলিতে একটি নতুন আইডি নিবন্ধভুক্ত করে।

আশাকরি এটা সাহায্য করবে :).


4

@id/এবং @android:id/এক নয়।

@id/আপনার অ্যাপ্লিকেশনটিতে রেফারেন্সিং আইডি, @android:id/অ্যান্ড্রয়েড প্ল্যাটফর্মের কোনও আইটেম রেফারেন্স করে।

গ্রহন তো ভুল।


ইওর বলছেন যে আমরা যখন অ্যাপ্লিকেশন @id/ referencing ID in your applicationরিসোর্সটি রেফারেন্স Error: No resource found that matches the given name (at 'id' with value '@id/my_resource_id')করতে এটি ব্যবহার করি তবে গ্রহটি দেয় । সুতরাং এর মধ্যে পার্থক্য কি @id/এবং @+id/? আপনি কীভাবে বলতে পারেন যে গ্রহনটি ভুল?
বিকাশ পাটিদার

1
আপনাকে @ অ্যান্ড্রয়েড: আইডি পরামর্শ না দেখানোর ক্ষেত্রে ग्रहणটি ভুল। এবং আপনি ভুল, আপনি যদি কোথাও @ + আইডি / মাইআইডি দিয়ে এটি ঘোষণা না করে @ আইডি / মাইআইডি ব্যবহার করছেন। সমস্ত @ আইডি / এক্সএক্সএক্স @ + আইডি / এক্সএক্সএক্সএক্স ব্যবহার করে আপনার অ্যাপ্লিকেশনটিতে কোথাও ঘোষণা করতে হবে।
ওলেগাস

স্পষ্ট করার জন্য ধন্যবাদ। আমি মনে করি যে এখানে ग्रहणটি ভুল নয়, পরিবর্তে এটি আমাদের লেআউট উপাদানগুলির প্রসঙ্গের ভিত্তিতে পরামর্শ দেখায়। এটি @id/কেবলমাত্র ক্ষেত্রে দেখায়RelativeLayout
বিকাশ পাতিদার

2

@+idএবং এর মধ্যে পার্থক্য @id:

  • @+id ইন ভিউয়ের জন্য আইডি তৈরি করতে ব্যবহৃত হয় R.javaফাইলের ।
  • @id আর জাভা ফাইলে দেখার জন্য তৈরি আইডি উল্লেখ করতে ব্যবহৃত হয়।

আমরা @+idসঙ্গে ব্যবহারandroid:id="" , কিন্তু কি যদি আইডি তৈরি করা এবং আমরা নির্মিত হচ্ছে (ফরওয়ার্ড উল্লেখ) আগেই উল্লেখ করা হয়।

সেক্ষেত্রে আমাদের ব্যবহার রয়েছে @+idসেক্ষেত্রে আমাদের আইডি তৈরি করতে এবং ভিউটি সংজ্ঞায়িত করার সময় করতে হবে।

নীচের কোডটি উল্লেখ করুন:

<RelativeLayout>

     <TextView
        android:id="@+id/dates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/spinner" />

   <Spinner
     android:id="@id/spinner"
     android:layout_width="96dp"
     android:layout_height="wrap_content"
     android:layout_below="@id/dates"
     android:layout_alignParentRight="true" />

</RelativeLayout>

উপরের কোডে স্পিনারের জন্য আইডি @+id/spinner অন্য দর্শনে তৈরি করা হয়েছে এবং স্পিনারকে সংজ্ঞায়িত করার সময় আমরা উপরে তৈরি আইডিটি উল্লেখ করছি।

সুতরাং, ভিউ তৈরির আগে যদি আমরা ভিউটি ব্যবহার করি তবে আমাদের আইডি তৈরি করতে হবে।


1

অ্যান্ড্রয়েডের মধ্যে “@+id/”এবং এর “@id/”মধ্যে পার্থক্য

প্রথমটি IDনির্দিষ্ট ইউআই উপাদান তৈরি করতে ব্যবহৃত হয় এবং অন্যটি নির্দিষ্ট উপাদানটি উল্লেখ করার জন্য ব্যবহৃত হয়


1

দৃশ্য আইটেমটি একই অপারেশন সঞ্চালিত করেন, তাহলে আপনি ব্যবহার করতে পারেন @+idকারণ একাধিক এর সংকলন করার সময় কোনো বিন্যাস প্রতিটি এন্ট্রির জন্য ফাইলটি মাত্র একটাই শুমার সৃষ্টি করে। সুতরাং উদাহরণস্বরূপ, যদি প্রতিটি পৃষ্ঠায় একই ক্রিয়াকলাপ সম্পাদন করে তবে আমার কাছে একটি সংরক্ষণের বোতাম রয়েছে, আমি প্রতিটি বিন্যাসে ব্যবহার করি । আর। জাভা ফাইলটিতে বাটন_সেভের জন্য কেবল একটি প্রবেশ রয়েছে।@+id/fooR.javaandroid:id="@+id/button_save"

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