【发布时间】:2021-08-06 07:05:02
【问题描述】:
我正在使用 Jetpack Compose 进行编程。
我从网络请求数据并将其保存到可组合的 ViewModel 中,
但是当我想使用其他 Composable 中的数据时,ViewModel 返回 null
// ViewModel:
class PartViewModel : ViewModel() {
private val mPicRepository: PicRepository = PicRepository()
private val _partsResult: MutableLiveData<PicResp> = MutableLiveData()
val partsResilt: LiveData<PicResp> get() = _partsResult
fun getPartsFromImage(id: Long) {
mPicRepository.getCloudPic(id, _partsResult)
}
}
// Composable which request data
@Composable
fun PagePhotoDetail(imageId: Long, navController: NavHostController) {
val vm: PartViewModel = viewModel()
vm.getPartsFromImage(imageId)
partsState.value?.data?.let {
Logger.d(it.parts) // this log show correct data
}
}
// Composable which use data
@Composable
fun PagePartListFromImage(navController: NavHostController) {
val vm: PartViewModel = viewModel()
Logger.d(vm.partsResilt.value) // this log cannot get data and show null
}
【问题讨论】:
-
因为不是同一个 ViewModel 实例。
标签: android android-jetpack-compose android-viewmodel