【问题标题】:The class cannot inherit from the AndroidViewModel, why?类不能继承AndroidViewModel,为什么?
【发布时间】:2019-01-31 14:02:48
【问题描述】:

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

public class LoginViewModel extends AndroidViewModel {

       public LoginViewModel() {}
...

但我在 ide 中收到此消息:

“android.arch.lifecycle.AndroidViewModel”中没有可用的默认构造函数

这是怎么回事?

我的 graddle 看起来像这样:

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: android android-mvvm


    【解决方案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作为 唯一的参数。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-20
          • 1970-01-01
          • 2010-09-28
          • 1970-01-01
          • 2014-06-01
          • 2012-03-11
          • 2016-05-29
          • 1970-01-01
          相关资源
          最近更新 更多