如何通过不同的资源获取引用资源的ID?
How to get ID of the referenced resource by a different resource?
我想在运行时获取引用资源的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
您可以使用 Resources#getValue()
方法获得它,为 resolveRefs
参数传递 false
。例如:
TypedValue value = new TypedValue();
getResources().getValue(R.string.alias_name, value, false);
int aliasedId = value.data;
如图所示,别名资源的数字 ID 将位于 TypedValue
的 data
字段中。如果你真的需要它的十六进制,你可以将它传递给Integer.toHexString()
。而且,如果您需要别名资源名称,则只需:
String aliasedName = getResources().getResourceEntryName(value.data);
我想在运行时获取引用资源的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
您可以使用 Resources#getValue()
方法获得它,为 resolveRefs
参数传递 false
。例如:
TypedValue value = new TypedValue();
getResources().getValue(R.string.alias_name, value, false);
int aliasedId = value.data;
如图所示,别名资源的数字 ID 将位于 TypedValue
的 data
字段中。如果你真的需要它的十六进制,你可以将它传递给Integer.toHexString()
。而且,如果您需要别名资源名称,则只需:
String aliasedName = getResources().getResourceEntryName(value.data);