Luk*_*uke 16 android kotlin android-studio android-jetpack-compose
我正在尝试使用 的实例MutableState作为属性委托。
这是我所拥有的:
val countState = remember { mutableStateOf(0) }
这就是我想要的:
var count by remember { mutableStateOf(0) }
但是,当我使用by关键字时,我收到编译器错误:
Type 'TypeVariable(T)' has no method 'getValue(Nothing?, KProperty<*>)' and thus it cannot serve as a delegate
出了什么问题?
Luk*_*uke 48
要充当委托,MutableState需要一个getValue函数(用于读取值)和一个setValue函数(用于写入值)。
当您MutableState通过访问时mutableStateOf,您使用导入:
import androidx.compose.runtime.mutableStateOf
但是,此导入不包括getValue和setValue函数MutableState- 它们在单独的文件中定义为扩展函数。要访问它们,需要显式导入该文件。
这本身通常不是问题 - 如果您输入:
countState.getValue(...)
Android Studio 会自动为您建议所需的导入。
然而,当您使用by关键字时,这是一个问题 - Android Studio 不会自动建议您导入。相反,它会给出cannot serve as a delegate错误,但没有任何指示您需要做什么。
因此,解决方法是自己手动添加扩展函数的导入:
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
Run Code Online (Sandbox Code Playgroud)
希望 IDE 团队中的某个人能够在将来使这一点变得更加明显 - 导入的自动建议将是理想的!
| 归档时间: |
|
| 查看次数: |
5320 次 |
| 最近记录: |