1 回答

TA貢獻2051條經驗 獲得超10個贊
我以前遇到過這個問題,我通過這樣做來解決它。在您的活動中,創建您的ViewModel工廠,如下所示:
//Inside MyActivity
ViewModelProvider.Factory factory = new ViewModelProvider.Factory() {
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
return (T) new MyAndroidViewModel(getApplication(),
"My string!");
}
};
然后用它來創建你的ViewModel:
viewModel = ViewModelProviders.of(this, factory).get(MyAndroidViewModel.class);
更新:
由于ViewModelProviders該類已被棄用,更新后的答案如下。工廠和以前一樣,只是換成了 Kotlin。
var factory = object : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return SimpleAndroidViewModel(activity!!.application,
"My string!") as T
}
}
但是,我們創建 ViewModel 實例的行已經改變,現在我們正在使用ViewModelProvider該類。
private val viewModel: SimpleAndroidViewModel by lazy {
ViewModelProvider(this, factory).get(SimpleAndroidViewModel::class.java)
}
添加回答
舉報