Android ViewModelProvider.get始终提供未解析的引用

Android ViewModelProvider.get始终提供未解析的引用,android,kotlin,viewmodel,android-livedata,android-lifecycle,Android,Kotlin,Viewmodel,Android Livedata,Android Lifecycle,我试图在我的应用程序中使用ViewModel库,我创建了一个类MainActivityViewModel,它扩展了ViewModel类。当尝试使用ViewModelProvider.get(class)实例化MainActivity中的MainActivityViewModel类时,get方法始终会导致无法解析的引用 MainActivityViewModelclass: class MainActivityViewModel: ViewModel() { private lateini

我试图在我的应用程序中使用ViewModel库,我创建了一个类
MainActivityViewModel
,它扩展了ViewModel类。当尝试使用
ViewModelProvider.get(class)
实例化
MainActivity
中的
MainActivityViewModel
类时,get方法始终会导致无法解析的引用

MainActivityViewModel
class:

class MainActivityViewModel: ViewModel() {
    private lateinit var mWords: MutableLiveData<List<Word>>

    fun getWords(): LiveData<List<Word>>{
        return mWords
    }
}
class MainActivity : AppCompatActivity() {

private lateinit var mMainActivityViewModel: MainActivityViewModel
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val recycler = findViewById<RecyclerView>(R.id.recycler)
    recycler.adapter = RecyclerAdapter(this)
    recycler.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)

    mMainActivityViewModel = ViewModelProvider.get(MainActivityViewModel::class.java)
}
} 我不确定我做错了什么

用于liveData的依赖项:

def lifecycle_version = "2.2.0"
def arch_version = "2.1.0"
implementation 'androidx.core:core-ktx:1.3.2'
implementation "androidx.fragment:fragment-ktx:1.2.5"
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// Lifecycles only (without ViewModel or LiveData)
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"

提前感谢

您需要在上下文中传递,以便ViewModel知道何时可以删除它

mMainActivityViewModel = ViewModelProvider(this).get(MainActivityViewModel::class.java)

您需要传递viewmodel提供程序的所有者(活动/片段)

你也可以这样声明

import androidx.fragment.app.viewModels  //use this import

val mMainActivityViewModel: MainActivityViewModel by viewModels() // no need to initialize it again 

   

它不是静态/伴生对象method@Selvin你能详细说明一下吗?关于什么?您需要这个类的实例
import androidx.fragment.app.viewModels  //use this import

val mMainActivityViewModel: MainActivityViewModel by viewModels() // no need to initialize it again