Làm cách nào để có được ID của tài nguyên được tham chiếu bởi một tài nguyên khác?


9

Tôi muốn lấy ID của tài nguyên được tham chiếu trong thời gian chạy. Ví dụ: đây là mã của tôi:

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

và tôi quan tâm đến ID của R.string.get_startedviệc chỉ có tham chiếu R.string.d2c_entryroadblock_start_valuetrong thời gian chạy.

Bạn cũng có thể thấy nó trông như thế nào trong trình phân tích APK bên dưới - Tôi cần có được điều đó @ref/0x7f1302fc

Ảnh chụp màn hình phân tích APK

Câu trả lời:


6

Bạn có thể nhận được rằng với Resources#getValue()phương pháp, đi qua falsecho resolveRefstham số. Ví dụ:

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

Như đã trình bày, các ID số cho tài nguyên aliased sẽ nằm trong TypedValue's datalĩnh vực. Nếu bạn thực sự cần nó trong hệ thập lục phân, bạn có thể chuyển nó đến Integer.toHexString(). Và, nếu bạn cần tên tài nguyên bí danh, thì nó chỉ đơn giản là:

String aliasedName = getResources().getResourceEntryName(value.data);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.