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

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文件

@Module
public class ActivityModule {
    private final Activity mActivity;

    public ActivityModule(Activity activity) {
        this.mActivity = activity;
    }

    @Provides
    @PerActivity
    public Activity provideActivity() {
        return this.mActivity;
    }
}

AppModule.java文件

@Module
public 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值