在AndroidViewModel中,如何使用接收到的应用属性?

In AndroidViewModel, how to use the received application property?

一个简单的AndroidViewModel看起来像

class AppViewModel(application: Application) : AndroidViewModel(application) {...}

现在,要访问整个模型的 application 属性,我们需要向其添加 val/var(据我所知)。

class AppViewModel(val application: Application) : AndroidViewModel(application) {...}

然而这给出了错误,说

Accidental Override: The following declarations have the same JVM signature: getApplication()

我该如何解决这个问题?


您已经拥有访问权限,您可以在 class:

中使用此 属性
private val db = SomeDB.getInstance(application)

但不在 class 方法中,您必须手动传递它:

fun myViewModelMethod(application: Application = application, ...) {}

但是,您可以在视图模型中声明新的 属性:

class AppViewModel(application: Application) : AndroidViewModel(application) {
    val app = application
...
}

并在里面的任何地方使用它。