引起:java.lang.NoSuchMethodException: [类android.app.Application] - viewmodel

问题描述 投票:0回答:1

我在我的Android应用程序中创建自己的viewmodel。 当应用程序启动时,它崩溃了,我收到了错误

“引起:java.lang.NoSuchMethodException:[class android.app.Application]”

1.查看模型类:

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.主要活动类

 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);
android android-viewmodel
1个回答
1
投票

您需要将viewmodel工厂传递给of调用,否则您的工厂将无法使用。

viewModel = ViewModelProviders.of(this, viewModelFactoryInstance).get(MainViewModel.class);
© www.soinside.com 2019 - 2024. All rights reserved.