在其模块中引用 Activity

Referencing the Activity inside its module

如何使用新的 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);
}

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

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