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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过其他资源获取引用资源的ID?相关的知识,希望对你有一定的参考价值。

我想在运行时获取引用资源的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

答案

您可以通过Resources#getValue()方法获得,为false参数传递resolveRefs。例如:

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);

以上是关于如何通过其他资源获取引用资源的ID?的主要内容,如果未能解决你的问题,请参考以下文章

MFC 我在几个图片控件显示了图片,如何获取这几个图片的资源编号?

Android 安装包优化移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )

android 怎么在代码中引用assets中的资源

Android中通过反射获取资源Id

获取 styled 属性中使用的可绘制引用的资源 id

如何获取具有已知资源名称的资源 id?