Comment obtenir l'ID de la ressource référencée par une autre ressource?

9

Je souhaite obtenir l'ID de la ressource référencée lors de l'exécution. Par exemple, voici mon code:

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

et je suis intéressé par l'ID de R.string.get_startedn'avoir que la référence à l' R.string.d2c_entryroadblock_start_valueexécution.

Vous pouvez également voir à quoi cela ressemble dans l'analyseur APK ci-dessous - je dois obtenir cela @ref/0x7f1302fc

Capture d'écran de l'analyseur APK

Mariusz
la source

Réponses:

6

Vous pouvez l'obtenir avec la Resources#getValue()méthode, en passant falsepour le resolveRefsparamètre. Par exemple:

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

Comme le montre, l'identifiant numérique de la ressource crénelage sera dans le TypedValuede » datachamp. Si vous en avez réellement besoin en hexadécimal, vous pouvez le passer à Integer.toHexString(). Et, si vous avez besoin du nom de ressource aliasé, c'est simplement:

String aliasedName = getResources().getResourceEntryName(value.data);
Mike M.
la source