다른 리소스로 참조 리소스의 ID를 얻는 방법은 무엇입니까?


9

런타임에 참조 된 리소스의 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 분석기 스크린 샷

답변:


6

Resources#getValue()메소드 false를 사용하여 resolveRefs매개 변수를 전달할 수 있습니다 . 예를 들면 다음과 같습니다.

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

표시된 것처럼 별칭이 지정된 리소스의 숫자 ID는 TypedValuedata필드에 있습니다. 실제로 16 진수로 필요한 경우에 전달할 수 있습니다 Integer.toHexString(). 그리고 별칭이 지정된 리소스 이름이 필요한 경우 간단히 다음과 같습니다.

String aliasedName = getResources().getResourceEntryName(value.data);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.