如何通过其他资源获取引用资源的ID?


9

我想在运行时获取引用资源的ID。例如,这是我的代码:

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

并且我对R.string.get_startedR.string.d2c_entryroadblock_start_value在运行时具有引用的ID感兴趣。

您还可以在下面的APK分析器中查看其外观-我需要得到它 @ref/0x7f1302fc

APK分析器屏幕截图

Answers:


6

你可以得到与Resources#getValue()方法,传递falseresolveRefs参数。例如:

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

如图所示,别名资源的数字ID将在TypedValuedata字段中。如果您确实需要十六进制,则可以将其传递给Integer.toHexString()。而且,如果您需要别名资源名称,则只需:

String aliasedName = getResources().getResourceEntryName(value.data);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.