【问题标题】:In AndroidViewModel, how to use the received application property?在AndroidViewModel中,如何使用接收到的应用属性?
【发布时间】:2022-01-05 10:54:23
【问题描述】:

一个简单的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()

我该如何解决这个问题?

【问题讨论】:

    标签: android kotlin constructor android-viewmodel


    【解决方案1】:

    你已经拥有访问权限,你可以在你的类中使用这个属性:

    private val db = SomeDB.getInstance(application)
    

    但不在类方法内部,必须手动传递:

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

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

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

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

    【讨论】:

    • 好吧,我不知道你所说的 db thingy 是什么意思,但你的最后一个例子是完美的。谢谢!
    • 而且.. 突然间你的声望比我还高... 我有一个声望超过 2000 的帐户,但它被暂停了。我创建了另一个帐户,他们删除了它。如果您想学习一些东西,这是一个合适的网站,但不要为了获得声誉而明确地在该网站上工作,因为他们会在没有事先通知的情况下从您手中夺走一切......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多