Android ViewModelProvider.get始终提供未解析的引用
我试图在我的应用程序中使用ViewModel库,我创建了一个类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
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