जवाबों:
कुछ इस तरह के साथ:
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()
गतिविधि से विधियां हैं।
आप यह भी आज़मा सकते हैं:
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");
दूसरा तरीका यह है कि Android.R.drawable क्लास के लिए डॉक्यूमेंटेशन देखें ।
संसाधन ID प्राप्त करने के लिए आप इस फ़ंक्शन का उपयोग कर सकते हैं:
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());
एक के लिए स्ट्रिंग संसाधन ID आप इसे इस तरह कॉल कर सकते हैं:
getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());
आदि...
सावधान : यह एक RuntimeException फेंकता है अगर यह संसाधन ID खोजने में विफल रहता है। उत्पादन में ठीक से ठीक होना सुनिश्चित करें।
static
है, अन्यथा getResources()
काम नहीं करेगा।
Context
उपलब्ध नहीं थी। फिक्स दूर करने के लिए या तो था static
और यह एक में ले जाते हैं Context
(उदाहरण के लिए Activity
या Application
); या वैकल्पिक निर्धारण जोनाथन ने अपने संपादन में किया, जो Context
कि विधि में पास करना है।