class 不能继承AndroidViewModel,为什么?

The class cannot inherit from the AndroidViewModel, why?

我尝试创建一个新的 class 继承自 AndroidViewModel,如下所示

public class LoginViewModel extends AndroidViewModel {

       public LoginViewModel() {}
...

但我在 ide 中收到此消息:

'android.arch.lifecycle.AndroidViewModel'

中没有可用的默认构造函数

我的会这样吗?

我的 gradle 看起来像这样:

...
    implementation 'android.arch.lifecycle:extensions:1.1.1'
...

任何ide一个?

谢谢

AndroidViewModel 只有一个 public 构造函数以 Application 作为参数。您必须从构造函数中调用它:

public LoginViewModel(Application app) {
    super(app);
}

https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel

子类必须有一个接受 Application 作为唯一参数的构造函数。

您需要将 super 调用添加到 AndroidViewModel class when inheriting from it. AndroidViewModel class contains default constructor 并将 Application class 作为变量,因此您应该更改您的实施如下:

public class LoginViewModel extends AndroidViewModel {

   public LoginViewModel(Application application) {
       super(application);
       // Do rest of your stuff here ...
   }
...

AndroidViewModel class 的默认实现声明:

Application context aware ViewModel.

Subclasses must have a constructor which accepts Application as the only parameter.