Android 如何在Kotlin中为上下文创建关于getInteger的扩展函数?

Android 如何在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

我是Kotlin的初学者,该代码从资源文件中获取int值

我希望使用扩展函数来实现它,并像调用this.getInteger(R.integer.ActivityEditBackup)一样调用它。

但是我做的代码B是不正确的,我如何修复它

代码A

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)