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

时间:2019-12-05 13:00:33

标签: android android-resources

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

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

我对R.string.get_started的ID仅在运行时引用R.string.d2c_entryroadblock_start_value感兴趣。

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

APK analyzer screenshot

1 个答案:

答案 0 :(得分:6)

您可以使用Resources#getValue()方法,通过为false参数传递resolveRefs来实现。例如:

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

如图所示,别名资源的数字ID将在TypedValue的{​​{1}}字段中。如果您实际需要十六进制,则可以将其传递给data。而且,如果您需要别名资源名称,则只需:

Integer.toHexString()