繁体   English   中英

如何在 Android Studio 中使用 Hilt 将依赖项注入上下文到 ViewModel?

[英]How can I dependency injection Context into ViewModel using Hilt in Android Studio?

之前,我使用代码 A 将Context传递给ViewModel

现在我希望使用 Hilt 作为依赖注入来传递Context

我已阅读文章,代码 B 来自文章。

1:代码 B 是否是将Context传递给ViewModel的正确方法?

2:在我看来,为了在Android Studio项目中使用Hilt,我在项目中添加了例如Code C,是否需要在Code B中使用fun provideApplicationContext() = MyApplication()

代码 A

class HomeViewModel(private val mApplication: Application, val mRepository: DBRepository) : AndroidViewModel(mApplication) {
  ...
}

代码 B

class MainViewModel @ViewModelInject constructor(
    @ApplicationContext private val context: Context,
    private val repository: Repository,
    @Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel() {
    ...
}


@Singleton
@Provides
fun provideApplicationContext() = MyApplication()

代码 C

@HiltAndroidApp
class MyApplication : Application() {
}

这就是我在视图模型中注入 applicationContext 的方式,它运行良好。

基础应用

@HiltAndroidApp
class BaseApplication: Application()

应用模块

@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Singleton
@Provides
fun provideApplication(@ApplicationContext app: Context):   BaseApplication{
    return app as BaseApplication
}

查看模型

@HiltViewModel
class PendingListViewModel
@Inject
constructor(private val application: BaseApplication)

ViewModel 中的用法

AppCompatResources.getDrawable(application.applicationContext, R.drawable.marker_circle)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM