为了传输 ViewModel 的其他参数/参数,我们使用了 ViewModelFactory。例如
ExtraParamsViewModelFactory(this.requireActivity().application, "some string value")
但是当创建视图模型时,我无法动态更改参数/参数
val myViewModel = ViewModelProvider(this, ExtraParamsViewModelFactory(this.requireActivity().application, "some string value")).get(SomeViewModel::class.java)
"某个字符串值"在片段/活动类中被编码。在"某个字符串值"中,我需要传递一个始终与 ViewModel 不同的日期。在片段中,用户选择一个日期,单击按钮,并将该日期作为参数/参数传递给ViewModel。不适合此视图模型工厂?
无需在 ViewModel 构造函数中传递参数。 您所需要的只是一个 setter & warrper 类,具体取决于您的使用情况。
我想你的视图模型会有这样的东西
data class CustomWrapper<T>(var value:T)
class VM : ViewModel(){
private val stringValue = CustomWrapper<String>("")
fun setNewStringValue(value:String){
stringValue.value = value
//TODO:: update stuff related to `stringValue`
}
}
然后在您的活动/片段中。简单地称它..喜欢这个
vm.setNewStringValue("new value")