Android资源ID转名称

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容