由以下原因引起:java.lang.NoSuchMethodException:<init> [class android.app.Application] - viewmodel
Caused by: java.lang.NoSuchMethodException: <init> [class android.app.Application] - viewmodel
我正在 android 应用程序中创建自己的视图模型。
当应用程序启动时它崩溃了,我得到了错误
"Caused by: java.lang.NoSuchMethodException: [class android.app.Application]"
1.查看模型 class:
public class MainViewModel extends AndroidViewModel implements OnCommunicationListener {
public MainViewModel(@NonNull Application application, DeviceData deviceData) {
super(application);
….
}
2。查看模型工厂
public class ViewModelFactory extends ViewModelProvider.AndroidViewModelFactory {
@NonNull
private final Application application;
private final DeviceData deviceData;
public ViewModelFactory(@NonNull Application application, DeviceData deviceData) {
super(application);
this.application = application;
this.deviceData = deviceData;
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
if (modelClass.isAssignableFrom(MainViewModel.class)) {
return (T) new MainViewModel(application, deviceData);
}
throw new IllegalArgumentException("Unknown ViewModel class");
}
}
3。主要activityclass
viewModel = ViewModelProviders.of(this).get(MainViewModel.class);
App crashes when the following line executed in the main activity
viewModel = ViewModelProviders.of(this).get(MainViewModel.class);
您需要将视图模型工厂传递给 of
调用,否则您的工厂将无法使用。
viewModel = ViewModelProviders.of(this, viewModelFactoryInstance).get(MainViewModel.class);
我正在 android 应用程序中创建自己的视图模型。
当应用程序启动时它崩溃了,我得到了错误
"Caused by: java.lang.NoSuchMethodException: [class android.app.Application]"
1.查看模型 class:
public class MainViewModel extends AndroidViewModel implements OnCommunicationListener {
public MainViewModel(@NonNull Application application, DeviceData deviceData) {
super(application);
….
}
2。查看模型工厂
public class ViewModelFactory extends ViewModelProvider.AndroidViewModelFactory {
@NonNull
private final Application application;
private final DeviceData deviceData;
public ViewModelFactory(@NonNull Application application, DeviceData deviceData) {
super(application);
this.application = application;
this.deviceData = deviceData;
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
if (modelClass.isAssignableFrom(MainViewModel.class)) {
return (T) new MainViewModel(application, deviceData);
}
throw new IllegalArgumentException("Unknown ViewModel class");
}
}
3。主要activityclass
viewModel = ViewModelProviders.of(this).get(MainViewModel.class);
App crashes when the following line executed in the main activity
viewModel = ViewModelProviders.of(this).get(MainViewModel.class);
您需要将视图模型工厂传递给 of
调用,否则您的工厂将无法使用。
viewModel = ViewModelProviders.of(this, viewModelFactoryInstance).get(MainViewModel.class);