Dagger2中发生android.app.Activity is bound multiple times:

来源:互联网 发布:linux yum 安装rpm 编辑:程序博客网 时间:2024/06/05 18:57

android.app.Activity is bound multiple times:

上面已经很明显说明了,这里绑定了两次了。


具体的代码如下。

AppComponent.java文件:

@Singleton@Component(modules = AppModule.class)public interface AppComponent {  public Activity getActivity();  void inject(App app);  void inject(BaseActivity baseActivity);}


ActivityComponent.java文件:

@PerActivity@Component(dependencies = AppComponent.class, modules = ActivityModule.class)public interface ActivityComponent {    public Activity getActivity();}

ActivityModule.java文件

@Modulepublic class ActivityModule {    private final Activity mActivity;    public ActivityModule(Activity activity) {        this.mActivity = activity;    }    @Provides    @PerActivity    public Activity provideActivity() {        return this.mActivity;    }}

AppModule.java文件

@Modulepublic class AppModule {    private final Context mContext;    public AppModule(Context context) {        this.mContext = context;    }    @Provides @Singleton    public Context provideAppContext() {        return mContext.getApplicationContext();    }    @Provides @Singleton    public Activity provideActivity() {        return null;    }}


PerActivity.java注解文件
@Scope@Retention(RetentionPolicy.RUNTIME)public @interface PerActivity {}


这里从ActivityComponent.java文件开始分析:

@Component(dependencies = AppComponent.class, modules = ActivityModule.class)

文件中的:

public Activity getActivity();
表明它需要从对应的dependencies或者modules中取得这里的Activity。


对应的依赖AppComponent.java文件和对应的提供的依赖文件是ActivityModule.java。

它们中都有相关的方法提供Activity的方法,所以导致出现了问题。




0 0
原创粉丝点击