Android资源ID转名称
有时候我们调试或写AndroidJUnit测试代码的时候希望把资源文件的id打印出来, 但是这个名称是个Int类型不方便排查, 所以有时候我们想把Android资源id以字符串的形式打印出资源id的名称.
具体实现代码如下:
// 在类中初始化资源映射(例如在Application或Activity中)
private val resourceMap by lazy {
val map = mutableMapOf<Int, String>()
try {
// 获取R.mipmap类的所有字段
val fields = R.mipmap::class.java.declaredFields
fields.forEach { field ->
try {
val id = field.getInt(null) // 获取静态字段的值
map[id] = "R.mipmap.${field.name}"
} catch (ignored: Exception) {
// 处理异常
}
}
} catch (ignored: Exception) {
// 处理类未找到的情况
}
map
}
// 打印日志的函数
fun printStdListNames(stdList: List<Int>) {
stdList.forEach { id ->
val name = resourceMap[id] ?: "Unknown ID: $id"
Log.d("ResourceName", name)
}
}
// 使用示例
val stdList = mutableListOf(
R.mipmap.std_test_1,
R.mipmap.std_test_2,
R.mipmap.std_test_3,
R.mipmap.std_test_4
)
printStdListNames(stdList)