一、用kotlin写的话如下:
object ReflectUtil {
/**
* 获取图片名称获取图片的资源id的方法 ,调用的时候
* getResourceByReflect("sdf", R.mipmap::class.java)
*/
fun getResourceByReflect(imageName: String, mipmap: Class<*>): Int {
// val mipmaps = mipmap
var field: Field? = null
var r_id = 0
try {
field = mipmap.getField(imageName)
field!!.isAccessible = true
r_id = field.getInt(field.name)
} catch (e: Exception) {
Log.e("ERROR", "PICTURE NOT FOUND!")
}
return r_id
}
/**
* 获取图片名称获取图片的drawable id的方法
* getDrawableByReflect("sdf", R.mipmap::class.java)
*/
fun getDrawableByReflect(imageName: String,drawable : Class<*>): Int {
// val drawables = drawable
var field: Field? = null
var r_id = 0
try {
field = drawable.getField(imageName)
field!!.isAccessible = true
r_id = field.getInt(field.name)
} catch (e: Exception) {
Log.e("ERROR", "PICTURE NOT FOUND!")
}
return r_id
}
}
二、用java写的话如下:
public class ReflectUtils {
/**
* 获取图片名称获取图片的资源id的方法
* @return
*/
public static int getResourceByReflect(String imageName, Class mipmap) {
// Class mipmap = R.mipmap.class;
// Class mipmaps = mipmap;
Field field = null;
int r_id = 0;
try {
field = mipmap.getField(imageName);
field.setAccessible(true);
r_id = field.getInt(field.getName());
} catch (Exception e) {
Log.e("ERROR", "PICTURE NOT FOUND!");
}
return r_id;
}
/**
* 获取图片名称获取图片的drawable id的方法
*/
public static int getDrawableByReflect(String imageName, Class drawable) {
// Class drawable = R.drawable.class;
Field field = null;
int r_id = 0;
try {
field = drawable.getField(imageName);
field.setAccessible(true);
r_id = field.getInt(field.getName());
} catch (Exception e) {
Log.e("ERROR", "PICTURE NOT FOUND!");
}
return r_id;
}
}