Android Studio 3.4
dagger-android 2.21
如何使用新的dagger android将
活动
传递给dagger模块
在使用dagger的旧版本之前,我们可以在构造函数中传递活动,并在提供者方法中返回该活动。但我不知道如何用dagger android做到这一点
我有以下模块。然而,dagger现在不关心预测活动
。
@Module
class ActivityModule {
@Reusable
@Provides
fun provideRetryListener(forecastActivity: ForecastActivity): RetryListener {
return forecastActivity
}
}
RetryListener
是由预测活动
实现的接口。我希望能够将此RetryListener
注入到我的RetryFra点
中,即。
class RetryFragment : Fragment() {
@Inject
lateinit var retryListener: RetryListener // Inject here
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
AndroidSupportInjection.inject(this)
super.onCreateView(inflater, container, savedInstanceState)
retryListener.onRetry() // usage like this
return inflater.inflate(R.layout.failurecase_layout, container, false)
}
}
在预测活动
class ForecastActivity : AppCompatActivity(), RetryListener {
@Inject
lateinit var forecastPresenter: ForecastPresenter
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
}
override fun onRetry() {
/* do something here */
}
}
我的ActivityBuilder如下:
@Module
abstract class ActivityBuilder {
@ContributesAndroidInjector(modules = [ActivityModule::class])
abstract fun injectIntoRetryFragment(): RetryFragment
}
我的组成部分是:
@Singleton
@Component(modules = [
AndroidSupportInjectionModule::class,
ActivityBuilder::class,
ActivityModule::class])
interface StockComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: StockApplication): Builder
fun build(): StockComponent
}
fun inject(application: StockApplication)
}
我的申请是:
class StockApplication : Application(), HasActivityInjector, HasSupportFragmentInjector {
@Inject
lateinit var dispatchingAndroidActivityInjector: DispatchingAndroidInjector<Activity>
@Inject
lateinit var dispatchingAndroidFragmentInjector: DispatchingAndroidInjector<Fragment>
override fun onCreate() {
super.onCreate()
DaggerStockComponent
.builder()
.application(this)
.build()
.inject(this)
}
override fun activityInjector(): AndroidInjector<Activity> {
return dispatchingAndroidActivityInjector
}
override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return dispatchingAndroidFragmentInjector
}
}
因此,问题是当使用dagger-android时,我如何将RetryListener
注入到RetryFrapt
中,该RetryListener
由预测活动
实现?
非常感谢提前
我看不到提供您的预测活动的模块,即:
@ContributesAndroidInjector
abstract fun forecastActivity(): ForecastActivity
活动
需要实施HasSupportFragmentInjector
,并提供一个分派和重新分配Injector
问题内容: (来自/ r / androiddev的x- post ) 我想以说这不是“更好”的帖子作为开头。严格来说,这是一个关于如何使用Dagger构建东西(以及如何在Kodein中构建它以帮助说明问题)的问题。 我已经在多个工作项目中使用Kodein几年了,但是我发现它使用起来非常容易,以至于我再也不会看过Dagger了。我开始了一个新的个人项目,我想再给Dagger做个尝试。 为简单起见,
实现如下所示 > 其次,我有一个活动范围组件网,我提供了当前活动和需要上下文的不同视图。 @module public class ActivityModule{private
Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于经过了公司内部多个项目的实践,也取得了不错的成效,因此,希望开源以后可以对大家有所帮助及参考。 设计理念 Dagger首先是一个WebUI自动化框架,提供了赖以操纵浏览
我正在尝试将3D-dulearray传递给另一个活动。我不知道为什么我得到NullpointerException?缺少什么? 主要活动 数据活动(reveiver) 而且我可以肯定的是,3d阵列已经在MainActivity中分配了。我已经测试过了! 如果有人对此有任何解决方案,并且可以回答为什么我得到NullPointerException,那将是很高兴的。 (编辑:NullpointerEx
问题内容: 我试图使Dagger在@Module批注内没有“ injects”指令的情况下工作。我将测试项目基于Android Simple Dagger示例 这是给我带来问题的部分: (编辑):在我的代码中是CTXModules.java 我要删除的部分是“ injects = HomeActivity.class”。我知道我可以在构造函数中使用@Inject批注标记自己的模块,以在那里删除该部
非常感谢你的帮助。