由于错误“没有零参数构造函数”而无法创建“ AndroidViewModel”类的实例

时间:2020-05-04 03:34:14

标签: android android-activity mvvm viewmodel

我已经搜索了SO,Reddit和Google两天,但没有找到这个问题的答案。由于某些原因,我无法创建AndroidViewModel的实例。为了清楚起见,我看到很多帖子都引用了“ ViewModel”类,但在这里我专门引用了“ AndroidViewModel”类。

在我的AndroidViewModel类中,我具有以下代码:

import androidx.lifecycle.AndroidViewModel
import android.app.Application

class MainActivityViewModel(application: android.app.Application) : AndroidViewModel(application) {

...

}

在MainActivity中,我有以下内容:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider

class MainActivity : AppCompatActivity() {

    private lateinit var viewModel: MainActivityViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        viewModel = ViewModelProvider(this).get(MainActivityViewModel::class.java)
    }
}

运行我的应用程序时,出现以下错误消息:

 Caused by: java.lang.InstantiationException: java.lang.Class<com.example.macrotracker.MainActivityViewModel> has no zero argument constructor

根据我所做的研究,这不会发生,因为我没有将ViewModelFactory传递给ViewModelProvider,它应该使用默认的ViewModelFactory类。此类显然应该具有将应用程序对象传递给AndroidViewModel的能力。但是,显然这并不是在某个地方发生。

我在这里做错什么了吗?我知道我只能使用普通的ViewModel或使用匕首的ViewModelFactory,但是我真的想弄清楚为什么我无法实例化此AndroidViewModel类,而不是对我不了解的内容使用不同的解决方案作为创可贴。

0 个答案:

没有答案