Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android kotlin使用ViewModelFactory将动态参数/参数传递给ViewModel_Android_Kotlin_Viewmodel - Fatal编程技术网

Android kotlin使用ViewModelFactory将动态参数/参数传递给ViewModel

Android kotlin使用ViewModelFactory将动态参数/参数传递给ViewModel,android,kotlin,viewmodel,Android,Kotlin,Viewmodel,为了传递ViewModel的其他参数,我们使用了ViewModelFactory。比如说 ExtraParamsViewModelFactory(this.requireActivity().application, "some string value") 但是创建ViewModel时,我无法动态更改参数 val myViewModel = ViewModelProvider(this, ExtraParamsViewModelFactory(this.requireActivity().

为了传递ViewModel的其他参数,我们使用了ViewModelFactory。比如说

ExtraParamsViewModelFactory(this.requireActivity().application, "some string value")
但是创建ViewModel时,我无法动态更改参数

 val myViewModel = ViewModelProvider(this, ExtraParamsViewModelFactory(this.requireActivity().application, "some string value")).get(SomeViewModel::class.java)

“某个字符串值”在片段/活动类中成为harcoded。在“某些字符串值”中,我需要传递一个始终与ViewModel不同的日期。在片段中,用户选择一个日期,单击按钮,并将该日期作为参数/参数传递给ViewModel。不适合此ViewModelFactory?

无需在ViewModel构造函数中传递参数。您所需要的只是一个setter&warrper类,具体取决于您的使用

我想你的ViewModel会有这样的东西


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")