【发布时间】:2023-01-20 14:16:19
【问题描述】:
我有 2 个值要存储在 SavedStateHandle 中。 我有一个以 SavedStateHandle 作为参数的视图模型:
@HiltViewModel
class ArtistViewModel @Inject constructor(
private val savedStateHandle: SavedStateHandle
) : ViewModel() {
val dateInMillis: Long = savedStateHandle.get(DATE_IN_MILLIS_SAVED_STATE_KEY) ?: 0L
fun setDateInMillis(date: Long) {
savedStateHandle.set(DATE_IN_MILLIS_SAVED_STATE_KEY, date)
Log.i(
LOG_TAG,
"result setDateInMillis: ${savedStateHandle.get<Long>.
(DATE_IN_MILLIS_SAVED_STATE_KEY)}, $dateInMillis"
)
}
val artistId: Int = savedStateHandle.get(ARTIST_ID_SAVED_STATE_KEY) ?: 0
fun setArtistId(id: Int) {
savedStateHandle.set(ARTIST_ID_SAVED_STATE_KEY, id)
Log.i(
LOG_TAG,
"result setArtistId: ${savedStateHandle.get<Int>(ARTIST_ID_SAVED_STATE_KEY)}, $artistId"
)
}
}
在我的活动中,我只需执行以下操作:
private val viewModel: DayViewModel by viewModels()
然后
viewModel.setArtistId(1)
viewModel.setDateInMillis(something)
但是 setArtistId 不起作用,我的 artistId 仍然为 0。另一方面,setDateInMillis 工作得很好。
【问题讨论】:
标签: android mvvm viewmodel dagger-hilt