在 Kotlin 中,ViewModel 是一个与 UI 无关的类,因此它不应该直接引用任何与 UI 相关的类,例如 Context。ViewModel 的目的是保存和管理与 UI 相关的数据,以便在配置更改(如屏幕旋转)时保持数据的一致性。

如果 ViewModel 需要使用 Context,可以使用 AndroidViewModel 类,它是 ViewModel 的一个子类,它接收一个 Application 作为参数。在 AndroidViewModel 中,可以通过 application 属性来获取 Context。

下面是一个简单的示例:

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

class MyViewModel(application: Application) : AndroidViewModel(application) {
    // 在这里可以使用 application 来获取 Context
    val context = application.applicationContext
}

然后,在 Activity 或 Fragment 中,可以通过 ViewModelProvider 来获取 ViewModel 的实例:

val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
val context = viewModel.context

请注意,ViewModelProvider 的参数可以是 Activity 或 Fragment,这取决于您在哪里创建 ViewModel 的实例。

如何在 Kotlin 的 ViewModel 中获取 Context

原文地址: https://www.cveoy.top/t/topic/qg0B 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录