Como obter a identificação do recurso referenciado por um recurso diferente?


9

Gostaria de obter o ID do recurso referenciado em tempo de execução. Por exemplo, este é o meu código:

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

e estou interessado no ID de R.string.get_startedter apenas a referência R.string.d2c_entryroadblock_start_valueem tempo de execução.

Você também pode ver como fica no analisador APK abaixo - preciso fazer isso @ref/0x7f1302fc

Captura de tela do analisador APK

Respostas:


6

Você pode obter isso com o Resources#getValue()método, passando falsepara o resolveRefsparâmetro Por exemplo:

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

Como mostrado, o ID numérico do recurso com alias estará no campo TypedValue's data. Se você realmente precisar dele em hexadecimal, poderá passá-lo para Integer.toHexString(). E, se você precisar do nome do recurso com alias, é simplesmente:

String aliasedName = getResources().getResourceEntryName(value.data);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.