1 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
我以前遇到過這個(gè)問題,我通過這樣做來解決它。在您的活動(dòng)中,創(chuàng)建您的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!");
}
};
然后用它來創(chuàng)建你的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
}
}
但是,我們創(chuàng)建 ViewModel 實(shí)例的行已經(jīng)改變,現(xiàn)在我們正在使用ViewModelProvider該類。
private val viewModel: SimpleAndroidViewModel by lazy {
ViewModelProvider(this, factory).get(SimpleAndroidViewModel::class.java)
}
添加回答
舉報(bào)