ViewModel中传入Context的方法

本文介绍了在Android开发中,如何在ViewModel中传入Context。第一种方法是利用kotlin拓展函数,第二种方法是自定义ViewModelProvider.Factory。虽然官方不推荐在ViewModel中持有Context,但这些方法提供了解决灵活性问题的方案。
摘要由CSDN通过智能技术生成

原文链接:ViewModel中传入Context的方法 - 掘金

ViewModel使用的越来越多了,严格来说,官方并不建议你在ViewModel中添加Context的引用。同时,ViewModel的构造方法是没有任何参数的,有的时候会很不灵活。以下记录两种方法。

1.通过kotlin的拓展函数


fun <T : ViewModelProvider, V : ViewModel> T.get(
    key: String,
    modelClass: Class<V>,
    context: FragmentActivity
): V {
    val model = get(key, modelClass)
    if (model is TestViewModel) {
        model.addContext(context)
    }
    return model
}

fun <T : ViewModelProvider, V : ViewModel> T.get(
    key: String,
    modelClass: Class<V>,
    context: Context
): V {
    val model = get(key, modelClass)
    if (model is TestViewModel) {
        model.addContext(context)
    }
    return model
}

fun <T : Vie
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值