Ошибка при изменении ViewModelProviders.of в androidx - PullRequest
0 голосов
/ 04 апреля 2020

Я все еще изучаю mvvm и обновляю свое приложение до последней версии androidx, но эта проблема остановила меня. Что я сделал до сих пор Я попробовал предложения, предложенные здесь, в stackoverflow и в документации Google android. Как получить ресурсы проекта, которые я использовал Создайте новый проект в android studio и выберите предложенный шаблон входа. Ошибка Код работает нормально, но есть предположение, что ViewModel.of в строке ниже устарела

loginViewModel = ViewModelProviders.of(this, new LoginViewModelFactory()).get(LoginViewModel.class);

Я заменил его на loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class);, но получил ошибку, пока Бег. Ошибка находится в журнале ниже.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.securitycavern.registerandlogin/com.securitycavern.registerandlogin.ui.login.LoginActivity}: java.lang.RuntimeException: Cannot create an instance of class com.securitycavern.registerandlogin.ui.login.LoginViewModel
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3121)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7078)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974)
 Caused by: java.lang.RuntimeException: Cannot create an instance of class com.securitycavern.registerandlogin.ui.login.LoginViewModel
    at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:221)
    at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:278)
    at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:106)
    at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185)
    at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
    at com.securitycavern.registerandlogin.ui.login.LoginActivity.onCreate(LoginActivity.java:39)
    at android.app.Activity.performCreate(Activity.java:7327)
    at android.app.Activity.performCreate(Activity.java:7318)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3101)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7078) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974) 
 Caused by: java.lang.InstantiationException: java.lang.Class<com.securitycavern.registerandlogin.ui.login.LoginViewModel> has no zero argument constructor
    at java.lang.Class.newInstance(Native Method)
    at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:219)
    at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:278) 
    at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:106) 
    at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185) 
    at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) 
    at com.securitycavern.registerandlogin.ui.login.LoginActivity.onCreate(LoginActivity.java:39) 
    at android.app.Activity.performCreate(Activity.java:7327) 
    at android.app.Activity.performCreate(Activity.java:7318) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3101) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7078) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:974) 

Я изменил конструктор на publi c, но он все еще падал с вышеуказанной ошибкой в ​​то время как в конструкторе он дал другое предположение, что конструктор может быть закрытым .

...