android - 在其模块中引用 Activity

标签 android dagger-2

如何使用新的 AndroidInjector.inject 并且仍然能够在 Activity 模块中提供 Activity 实例? Dagger 文档没有明确说明如何存档。

用例如下:我有一个 Activity 模块,它为我的 Activity 提供了一个 Presenter,但 Presenter 需要对 Activity 的引用。 我曾经有过类似的东西

@Inject Presenter presenter;

public onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   ((CustomApplication) getApplicationContext())
       .getAppComponent()
       .plus(new ActivityModule(this));
}

谁能给我指出一个使用 AndroidInjector.inject(this) 并允许在 Dagger 2 模块中引用 Activity 的示例?

最佳答案

检查 Dagger 2 Github issue 615

Activity 的实例是自动提供的,只需将其作为参数传递到模块方法中即可。

例子:

@Provides
@ActivityScope
public providePresenter(ActivityA activity) {
    return new PresenterA(activity);
}

您现在可以抽象出简单的模块。您的演示者也可以注入(inject)构造函数。

这实际上从我所有的模块中删除了很多代码。

关于android - 在其模块中引用 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43006277/

相关文章:

android - 如何在我自己的应用程序中处理 Action View Intent

android - Gradle警告我的build.gradle文件中不存在的配置

java - 如何知道从android发送到服务器的数据包

android - 没有 @Provides-annotated 方法就无法提供

java - 如何扩展 Google android 架构 Dagger 示例?

java - 确定设备存储空间不工作 : android

java - 如何从类内的另一个函数正确访问方法?

java - Dagger 找不到其他注释处理器生成的类

android - Android 上的 Dagger 2 : inject same dependency in Activity and retained Fragment

android - Jenkins:Android 项目构建失败(生成数据绑定(bind)/ Dagger 类失败)