Android 如何在Kotlin中为上下文创建关于getInteger的扩展函数?
我是Kotlin的初学者,该代码从资源文件中获取int值 我希望使用扩展函数来实现它,并像调用this.getInteger(R.integer.ActivityEditBackup)一样调用它。 但是我做的代码B是不正确的,我如何修复它 代码AAndroid 如何在Kotlin中为上下文创建关于getInteger的扩展函数?,android,kotlin,Android,Kotlin,我是Kotlin的初学者,该代码从资源文件中获取int值 我希望使用扩展函数来实现它,并像调用this.getInteger(R.integer.ActivityEditBackup)一样调用它。 但是我做的代码B是不正确的,我如何修复它 代码A mContext.resources.getInteger(R.integer.ActivityEditBackup)) 代码B inline fun <reified T : Activity>Context.getInteger(i
mContext.resources.getInteger(R.integer.ActivityEditBackup))
代码B
inline fun <reified T : Activity>Context.getInteger(int id): int {
return T.resources.getInteger(id)
}
inline fun Context.getInteger(int-id):int{
返回T.resources.getInteger(id)
}
你把它复杂化了一点
- 您不需要以任何方式使用特定类型的
,也不需要使扩展通用上下文
- 在参数列表中,参数的名称排在前面,类型排在后面
- Kotlin中整数类型的名称为
,大写字母为Int
I
- 您可以使用
在扩展函数中引用您的this
上下文
- 您可以使用支持注释指定参数始终为整数资源ID
inline fun Context.getInteger(@IntegerRes id: Int): Int {
return this.resources.getInteger(id)
}
还有一些关于语法的一般性混淆,您应该先查看文档,然后再查看
此外,您可以将函数转换为表达式体,并省略显式的
this
:
inline fun Context.getInteger(@IntegerRes id: Int) = resources.getInteger(id)