एक अलग संसाधन द्वारा संदर्भित संसाधन की आईडी कैसे प्राप्त करें?


9

मैं रनटाइम में संदर्भित संसाधन की आईडी प्राप्त करना चाहूंगा। उदाहरण के लिए यह मेरा कोड है:

<string name="d2c_entryroadblock_start_value" translatable="false">@string/get_started</string>

और मुझे रनटाइम में R.string.get_startedकेवल संदर्भ होने की आईडी में दिलचस्पी R.string.d2c_entryroadblock_start_valueहै।

आप यह भी देख सकते हैं कि नीचे एपीके विश्लेषक में यह कैसा दिखता है - मुझे इसे प्राप्त करने की आवश्यकता है @ref/0x7f1302fc

एपीके विश्लेषक स्क्रीनशॉट

जवाबों:


6

आप उस Resources#getValue()विधि के साथ , पैरामीटर के falseलिए पास कर सकते हैं resolveRefs। उदाहरण के लिए:

TypedValue value = new TypedValue();
getResources().getValue(R.string.alias_name, value, false);
int aliasedId = value.data;

दिखाया गया है, aliased संसाधन के लिए संख्यात्मक आईडी में हो जाएगा TypedValueके dataक्षेत्र। यदि आपको वास्तव में हेक्साडेसिमल में इसकी आवश्यकता है, तो आप इसे पास कर सकते हैं Integer.toHexString()। और, यदि आपको अलियास संसाधन नाम की आवश्यकता है, तो यह बस है:

String aliasedName = getResources().getResourceEntryName(value.data);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.