উত্তর:
এরকম কিছু সহ:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
getResources().getIdentifier(name, "id", getPackageName());
একটি ইমেজবটন আইডি পেতে ব্যবহার করব (যেমন আপনি R.id.name এর সাথে থাকবেন)।
name
? আমি এমন একটি বোতামের আইডি সন্ধান করতে চাই যার রেফারেন্সটি আমি জানি, আমার ক্ষেত্রে এটিbutton1
getResource()
এবং getPackageName()
ত্রুটি দেখাচ্ছে cannot resolve method
getResource()
এবং getPackageName()
ক্রিয়াকলাপ থেকে পদ্ধতি are
আপনি এটি ব্যবহার করে দেখতে পারেন:
try {
Class res = R.drawable.class;
Field field = res.getField("drawableName");
int drawableId = field.getInt(null);
}
catch (Exception e) {
Log.e("MyTag", "Failure to get drawable id.", e);
}
আমি নীচের URL থেকে এই উত্স কোডগুলি অনুলিপি করেছি। এই পৃষ্ঠায় করা পরীক্ষার ভিত্তিতে, এটি getIdentifier () এর চেয়ে 5 গুণ দ্রুত। আমি এটি আরও সহজ এবং সহজে ব্যবহারযোগ্য বলে মনে করেছি। আশা করি এটি আপনাকেও সহায়তা করবে।
পাবলিক সিস্টেম রিসোর্সের উদাহরণ:
// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");
আর একটি উপায় হ'ল অ্যান্ড্রয়েড.আর.ড্রেবলযোগ্য বর্গের জন্য ডকুমেন্টেশনগুলি উল্লেখ করা ।
রিসোর্স আইডি পেতে আপনি এই ফাংশনটি ব্যবহার করতে পারেন:
public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException {
try {
return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
} catch (Exception e) {
throw new RuntimeException("Error getting Resource ID.", e)
}
}
সুতরাং আপনি যদি একটি অঙ্কনযোগ্য রিসোর্স আইডি পেতে চান তবে আপনি এই পদ্ধতিটিতে কল করতে পারেন:
getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName());
(বা কোনও খণ্ড থেকে):
getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName());
একটি জন্য স্ট্রিং রিসোর্স আইডি আপনি এটা ভালো কল করতে পারেন:
getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());
ইত্যাদি ...
সাবধান হন : এটি একটি RuntimeException ছোঁড়ার যদি এটা রিসোর্স আইডি খুঁজে পেতে ব্যর্থ। উত্পাদন সঠিকভাবে পুনরুদ্ধার করতে ভুলবেন না।
static
নেওয়া দরকার , অন্যথায় getResources()
এটি কাজ করবে না।
Context
তখন তা পাওয়া যায় নি। ফিক্স হয় হয় এটি সরানোর static
এবং একটি Context
(যেমন Activity
বা Application
) মধ্যে সরানো ; বা বিকল্প সমাধান হ'ল জোনাথন তার সম্পাদনায় যা করেছিলেন তা পদ্ধতিতে প্রেরণ Context
।