【问题标题】:Setting value into SavedStateHandle not working将值设置为 SavedStateHandle 不起作用
【发布时间】: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


    【解决方案1】:

    你找到答案了吗?我也有同样的问题。但我的现实是只有一套作品。一次做 1 组,我的两个工作。两个都像你的一样设置,一个失败

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      相关资源
      最近更新 更多