该类不能从AndroidViewModel继承,为什么?

时间:2019-01-31 14:02:48

标签: android android-mvvm

我尝试创建一个继承自AndroidViewModel的新类,像这样

public class LoginViewModel extends AndroidViewModel {

       public LoginViewModel() {}
...

但是我在想法中得到了这个消息:

'android.arch.lifecycle.AndroidViewModel'中没有默认的构造函数

这件事我发生了吗?

我的gradle看起来像这样:

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

有什么主意吗?

谢谢

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

从其继承时,您需要向 AndroidViewModel类添加 super 调用。 AndroidViewModel类包含default constructor类,其中Application类为变量,因此您应按以下方式更改实现:

public class LoginViewModel extends AndroidViewModel {

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

AndroidViewModel类的默认实现表明:

  

Application上下文相关ViewModel

     

子类必须具有接受Application作为   唯一的参数。