有时候我们想动态的根据一个资源名获得到对应的资源id,就可以使用getResources().getIdentifier()方法来获取该id。然后再使用该id进行相关的操作。

打印出来的log为:
11-24 22:15:02.471 12023-12023/com.oyp.demo D/MainActivity: ----> 获取到的图片资源 drawableId= 213096860111-24 22:15:02.476 12023-12023/com.oyp.demo D/MainActivity: ----> 获取到的图片资源 drawableId=213083757911-24 22:15:02.477 12023-12023/com.oyp.demo D/MainActivity: ----> 获取到的图片资源 mipmapId=213090304011-24 22:15:02.477 12023-12023/com.oyp.demo D/MainActivity: ----> 获取到的字符串资源 stringId=2131099669
我们打开编译好后的 com.oyp.demo.R文件
首先来看看activity_main这个layout的id是不是和我们打印出来的一样是2130968601,如下图所示,在 com.oyp.demo.R文件中,activity_main的值确实是2130968601
部分代码如下所示:
public static final class layout {
...... public static final int abc_screen_simple = 2130968595; public static final int abc_screen_simple_overlay_action_mode = 2130968596; public static final int abc_screen_toolbar = 2130968597; public static final int abc_search_dropdown_item_icons_2line = 2130968598; public static final int abc_search_view = 2130968599; public static final int abc_select_dialog_material = 2130968600; public static final int activity_main = 2130968601; public static final int notification_media_action = 2130968602; public static final int notification_media_cancel_action = 2130968603; public static final int notification_template_big_media = 2130968604; public static final int notification_template_big_media_narrow = 2130968605;
...... public layout() {
}
}
drawable类型的图片 ic_launcher 的资源id 为 2130903040
public static final class mipmap {
public static final int ic_launcher = 2130903040; public mipmap() {
}
}
drawable类型的图片 oyp 资源id为 2130837579
public static final class drawable {
...... public static final int abc_textfield_search_material = 2130837578; public static final int notification_template_icon_bg = 2130837580; public static final int oyp = 2130837579; public drawable() {
}
}
String类型的资源author id为 2131099669
public static final class string {
...... public static final int app_name = 2131099668; public static final int author = 2131099669; public static final int status_bar_notification_info_overflow = 2131099667; public static final int title = 2131099670; public string() {
}
}
可以发现打印出来的资源id和com.oyp.demo.R文件生成的资源id是一致的,因此使用getResources().getIdentifier()方法完全可以正确地获取资源的id。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2144/viewspace-2812648/ ,如需转载,请注明出处,否则将追究法律责任。