我试图从数据库中检索一个条目,并在viewModelScope的帮助下成功地将值返回到我的视图模型中,但我希望将此值返回给驻留在片段中的调用函数,以便它可以显示在TextView上。
我尝试用传统的方法返回值,但不起作用。那么,我如何从viewModelScope.launch返回这个值到调用函数?
查看模型
fun findbyID(id: Int) {
viewModelScope.launch {
val returnedrepo = repo.delete(id)
Log.e(TAG, returnedrepo.toString())
// how to return value from here to Fragment
}
}
仓库
suspend fun findbyID(id: Int): userentity {
val returneddao = Dao.findbyID(id)
Log.e(TAG, returneddao.toString())
return returneddao
}
3条答案
按热度按时间2wnc66cl1#
LiveData
可用于从ViewModel
到Fragment
获取值。让函数
findbyID
返回LiveData
并在片段中观察它。ViewModel
中的函数Fragment
中的观察者ryhaxcpt2#
查看模型
}
碎片
jckbn6z73#
另一种不使用LiveData的方法是这样的,
与
viewModelScope
类似,也有一个lifecycleScope
,它具有生命周期感知组件,可以从UI层使用。以下是示例,碎片
视图模型
由于LiveData特定于Android环境,因此在某些地方使用KotlinFlow成为更好的选择,它提供了类似的功能。