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;
}
}
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface PerActivity {
}
这里从ActivityComponent.java文件开始分析:
@Component(dependencies = AppComponent.class, modules = ActivityModule.class)
文件中的:
public Activity getActivity();
表明它需要从对应的dependencies或者modules中取得这里的Activity。
它们中都有相关的方法提供Activity的方法,所以导致出现了问题。