রিসোর্স আইডি থেকে কীভাবে রিসোর্সের নাম পাবেন


158


আমার বিন্যাসে আমি এরকম কিছু সংজ্ঞায়িত করেছি।

<RadioButton
    android:id="@+id/radio1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Dnt want this text" />

ধরে নিন যে ক্রিয়াকলাপের কিছু ফাংশন আমাকে এই আইডি (রেডিওবুটনের আইডি) প্রদান করে। এখন আমি এই আইডি থেকে এই পাঠ্য রেডিও 1 পেতে চাই । সংক্ষেপে আমি লিখিত পাঠ্য রেডিও 1 পুনরুদ্ধার করতে চাইandroid:id="@+id/radio1"

কেউ আমাকে বলতে পারেন কীভাবে এটি সম্ভব?


এটি একটি দীর্ঘ গল্প .. সার্ভার থেকে প্রাপ্ত কিছু ডেটা থেকে আমার সম্পাদনা পাঠের বৃহত নম্বরে ডেটা পপুলেশন করা দরকার। সুতরাং সমস্ত পাঠ্যবক্সে ম্যানুয়ালি ডেটা সেট করার পরিবর্তে, আমি একটি পদ্ধতি লিখছি যা এটি আমার পক্ষে কাজ করতে পারে .. তার জন্য আমার এটি প্রয়োজন।
কোড_লাইফ

উত্তর:


363

আপনার ক্রিয়াকলাপে, এগুলি ব্যবহার করে দেখুন:

  1. স্ট্রিং পেতে radio1:

    getResources().getResourceEntryName(int resid);
  2. স্ট্রিং পেতে com.sample.app:id/radio1:

    getResources().getResourceName(int resid);

কোটলিনে এখন:

val name = v.context.resources.getResourceEntryName(v.id)

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

8
কোন ধারণা কি পার্থক্য getResourceEntryName(int resid)এবং মধ্যে getResourceName(int resid)?
জোশুয়া পিন্টার 22'14

10
@ জোশপিন্টার রেফারেন্সটিতে বলেছেন: getResourceEntryName: প্রদত্ত সংস্থান শনাক্তকারী getResourceName এর জন্য প্রবেশের নামটি ফিরিয়ে দিন: প্রদত্ত সংস্থান সনাক্তকারীর পুরো নামটি ফিরিয়ে দিন । এই নামটি "প্যাকেজ: টাইপ / এন্ট্রি" ফর্মের একক স্ট্রিং বলে মনে হচ্ছে পার্থক্যটি তখন যুক্ত হওয়া প্যাকেজে রয়েছে: getResourceName এর
জোসে_জিডি

@ শুভায়ু - আপনি কীভাবে এএসপ্রেসো পরীক্ষায় এটি করতে পারেন? getResferences () ফাংশনটি উপলব্ধ বলে মনে হচ্ছে না!
1ak31sha

আপনি যদি minifyEnabled truegetResources().getIdentifier(...
প্রোগার্ড

9

আপনার কাছে আইডি ( 'দীর্ঘ' টাইপ) যে আইডি এক্সেস রেডিও বোতাম করতে চান থেকে আইডি (নাম) যে radio1 । আপনি এটি ব্যবহার করুন

getResources().getResourceEntryName(id);

উপরের ব্যবহারে আপনি রেডিও বোতামের নাম অর্থাৎ রেডিও 1 পেতে পারেন। এখানে প্যারামিটার আইডি যা আপনার রয়েছে (দীর্ঘ টাইপ) । এটি আপনাকে 100% সাহায্য করবে এটি চেষ্টা করে দেখুন।


2
ধন্যবাদ. কেউ খুশী হলেন প্রকৃতপক্ষে সাধারণ "পরিবর্তে আপনার [নূব]" প্রতিক্রিয়াগুলির পরিবর্তে প্রশ্নের উত্তর দিয়েছিলেন। আমি এগুলির মাধ্যমে পুনরাবৃত্তি করার সময় উপাদানটির নাম রাখা ডিবাগিংয়ের জন্য অবিশ্বাস্য। আমি বলতে চাইছি, সত্যিই আমি কীভাবে 354814715 আইডি সহ টেক্সটভিউটি সন্ধান করব? (যা যদি আমি ভুল না হয়েও সংকলনের মধ্যে ধ্রুবক নই) - কেন ওপি এটির প্রয়োজন তা নিশ্চিত নয়, তবে আমার ফন্ট-স্কেলিং ফাংশনটি আসলে সমস্ত উপ-উপাদানগুলির সাথে পুনরাবৃত্তি হয়েছিল তা যাচাই করার জন্য আমার এটির প্রয়োজন ছিল।
স্টিভ

2

Kotlin:

val name = v.context.resources.getResourceEntryName(v.id)

2
এটি কী সমস্যার সমাধান করে এবং এটি কীভাবে হয় সে সম্পর্কে আপনি আরও তথ্য যুক্ত করতে পারেন :)
ফিলিপ মেসনার


এর থেকে পরিত্রাণ চাই.
ফিলিপ মেসনার

1

যদি আমি সঠিক, আপনি যা পুনরুদ্ধার করতে চেয়েছিলেন তা হ'ল "রেডিও 1" (আইডি থেকেই?) তাই যদি তাই হয় তবে প্রথমে আপনার আইডিটি নেওয়া উচিত।

int intname= buttonname.getId();

তারপরে এর ফলাফলটি পান

String stringname= getResources().getResourceEntryName(intname);

আশা করি আমি সাহায্য করেছি


-1

আপনার মানে আপনি আইডিটির স্ট্রিং টেক্সট নিতে চান?

যেহেতু আপনি এটি সংজ্ঞায়িত করেছেন আপনার জানা উচিত এটি কী।

যদি আপনার কোনও বিন্যাস থাকে এবং আপনি দেখতে চান যে কোনও ভিউয়ের একটি নির্দিষ্ট আইডি রয়েছে কিনা, আপনি পুরো লেআউটটি পেরিয়ে যেতে পারেন এবং getId () দিয়ে পরীক্ষা করতে পারেন, যদি প্রতিটি ভিউয়ের আইডি আপনি খুঁজছেন এমন আইডি ..

আশা করি এটি সহায়তা করে (যদি আমি বুঝতে পারি তবে আপনার প্রশ্নটি সঠিক হয়ে যায় .. :))


না, আপনি সব ভুল পেয়েছি। আমি অ্যান্ড্রয়েড থেকে পাঠ্য রেডিও 1 পুনরুদ্ধার করতে চাই : আইডি = "@ + আইডি / রেডিও 1"
কোড_লাইফ

পাঠ্য রেডিও 1 আপনার ভিডির আইডি। এটি কোনও সাধারণ পাঠ্য নয় যা আপনি ভাগ করতে পারেন, বিভক্ত করতে পারেন ইত্যাদি you আরও ভালভাবে আপনাকে সহায়তা করার জন্য আপনি কি আমাদের বলতে পারেন যে ঠিক এইটির জন্য আপনার এই পাঠ্যটি কী দরকার?
দিমিত্রিস মাকরিস

@ ডিমিট্রিসম্যাক্রিস: এটি একটি দীর্ঘ গল্প .. সার্ভার থেকে প্রাপ্ত কিছু ডেটা থেকে আমার সম্পাদনা পাঠের বৃহত সংখ্যায় ডেটা পপুল করা দরকার। সুতরাং সমস্ত পাঠ্যবক্সে ম্যানুয়ালি ডেটা সেট করার পরিবর্তে, আমি একটি পদ্ধতি লিখছি যা এটি আমার পক্ষে কাজ করতে পারে .. তার জন্য আমার এটি দরকার
কোড_লাইফ

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

আপনার প্রশ্বাসের জন্য ধন্যবাদ তবে আপনি সমস্ত ভুল পেয়েছি আমার 10 টি এডিটবক্স রয়েছে এবং আমি এই 10 টি সম্পাদনাবক্সে পূরণ করার মান সহ জসন স্ট্রিং হিসাবে পেয়েছি এই স্ট্রিংটিকে পার্সার্ড করার পরে এটি হ্যাশম্যাপে রূপান্তরিত হয়েছে। এখন পরিবর্তে প্রতিটি মান ম্যানুয়ালি করে (হ্যাশম্যাপের কী অনুসারে) পাঠ্য সম্পাদনা করার জন্য .. আমি এমন একটি পদ্ধতি লিখছি যা এই কাজটি আমার পক্ষে কাজ করতে পারে।
কোড_লাইফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.