【发布时间】:2021-03-14 12:22:36
【问题描述】:
我得到了 MyViewModel,构造函数是空的
public class MyViewModel extends ViewModel {
private MutableLiveData<RxBleClient> rxBleClient = new MutableLiveData<RxBleClient>();
public MyViewModel() {
}
public MutableLiveData<RxBleClient> getRxBleClient() {
return rxBleClient;
}
public void setRxBleClient(MutableLiveData<RxBleClient> rxBleClient) {
this.rxBleClient = rxBleClient;
}
}
我想提供这样的新模型,但是有问题:
MyViewModel model = new ViewModelProvider(this).get(MyViewModel.class);
error: no suitable constructor found for ViewModelProvider(MainActivity)
MyViewModel model = new ViewModelProvider(this).get(MyViewModel.class);
^
constructor ViewModelProvider.ViewModelProvider(ViewModelStoreOwner,Factory) is not applicable
(actual and formal argument lists differ in length)
constructor ViewModelProvider.ViewModelProvider(ViewModelStore,Factory) is not applicable
(actual and formal argument lists differ in length)
我确实实现了 ViewModelProvider.Factory
public class ViewModelFactory implements ViewModelProvider.Factory {
ViewModelFactory() {
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
try {
// what do I need to do here?
return modelClass.newInstance();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
但我不知道该怎么做,返回没有参数的工厂。
如何做到这一点?
谢谢
【问题讨论】:
-
你在哪里创建你的
MyViewModel?
标签: java android android-viewmodel