Dagger 在 ModelView 中注入 Context
Dagger inject Context in a ModelView
我正在尝试在我的 ModelView 中注入 Context
,但我有点困惑:
这是我的 Module
,我发给他一个 Application
供以后使用此上下文,但我不知道它来自此 Application
或如何拿走:
@Module
class module {
@Provides @Singleton fun appContext(application: Application): Context{
return application
}
}
这是我的 Component
:
@Component(modules = [module::class])
interface component {
fun providesApplication(): Application
}
最后,我不知道如何在我的 ViewModel 中注入它,因为它没有注入它的构造函数。
我应该如何将上下文注入我的 ViewModel
?
已经有 build-in ViewModel
和上下文,用 AndroidViewModel
替换从 ViewModel
的继承
参见:https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel
或者,您可以尝试这样的操作:
class YourViewModel @Inject constructor(context:Context) : ViewModel()
只是一个建议,如果没有别的办法,听我说完...
var context: Context? = null
fun initViewModelWithContext(context: Context) {
this.context = context
}
如果您找不到使用匕首的解决方案,您也可以这样做。然后你所有的函数都可以使用上下文的这个本地实例,并且这个 ViewModel
将是 destroyed/created 因为它需要所以它不会导致任何内存问题
我正在尝试在我的 ModelView 中注入 Context
,但我有点困惑:
这是我的 Module
,我发给他一个 Application
供以后使用此上下文,但我不知道它来自此 Application
或如何拿走:
@Module
class module {
@Provides @Singleton fun appContext(application: Application): Context{
return application
}
}
这是我的 Component
:
@Component(modules = [module::class])
interface component {
fun providesApplication(): Application
}
最后,我不知道如何在我的 ViewModel 中注入它,因为它没有注入它的构造函数。
我应该如何将上下文注入我的 ViewModel
?
已经有 build-in ViewModel
和上下文,用 AndroidViewModel
ViewModel
的继承
参见:https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel
或者,您可以尝试这样的操作:
class YourViewModel @Inject constructor(context:Context) : ViewModel()
只是一个建议,如果没有别的办法,听我说完...
var context: Context? = null
fun initViewModelWithContext(context: Context) {
this.context = context
}
如果您找不到使用匕首的解决方案,您也可以这样做。然后你所有的函数都可以使用上下文的这个本地实例,并且这个 ViewModel
将是 destroyed/created 因为它需要所以它不会导致任何内存问题