Come ottenere l'ID della risorsa di riferimento da una risorsa diversa?


9

Vorrei ottenere l'ID della risorsa referenziata in fase di esecuzione. Ad esempio questo è il mio codice:

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

e sono interessato all'ID del R.string.get_started avere solo il riferimento a R.string.d2c_entryroadblock_start_valuein fase di esecuzione.

Puoi anche vedere come appare nell'analizzatore APK di seguito: devo ottenerlo @ref/0x7f1302fc

Schermata dell'analizzatore APK

Risposte:


6

Puoi ottenerlo con il Resources#getValue()metodo, passando falseper il resolveRefsparametro. Per esempio:

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

Come si vede, l'ID numerico per la risorsa alias sarà nel TypedValue's datacampo. Se ne hai davvero bisogno in esadecimali, puoi passarlo a Integer.toHexString(). E, se hai bisogno del nome della risorsa con alias, allora è semplicemente:

String aliasedName = getResources().getResourceEntryName(value.data);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.