Активность: Активность: 2 инъекции. Каждый впрыскивается компонент работает в одиночку, но и инъекционного приводит к следующим ошибкам:Dagger 2 multiple Injection на Android
Error:(12, 10) error: android.app.Fragment cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.
fr.daggertest.MainActivity.fragmentB
[injected field of type: android.app.Fragment fragmentB]
Error:(12, 10) error: android.app.Application cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.
fr.daggertest.MainActivity.applicationA
[injected field of type: android.app.Application applicationA]
Но они оба уже @Provides аннотированный, так что я не вижу, что это не так?
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Inject
Fragment fragmentB;
@Inject
Application applicationA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// create component & inject...
}
Модули & компоненты:
@Component(modules={ModuleA.class})
@Singleton
public interface ComponentA {
void inject(MainActivity activity);
}
@Component(modules={ModuleB.class})
@Singleton
public interface ComponentB {
void inject(MainActivity activity);
}
@Module
public class ModuleA {
Application mApplication;
public ModuleA(Application application) {
mApplication = application;
}
@Provides
public Application provideApplication() {
return mApplication;
}
}
@Module
public class ModuleB {
Fragment mFragment;
public ModuleB(Fragment fragment) {
mFragment = fragment;
}
@Provides
public Fragment provideFragment() {
return mFragment;
}
}
Вы не предоставили метод, который предоставляет 'Activity', только' Fragment' и 'Application'. Также вы можете опубликовать свой код «создать компонент и ввести»? – Pelocho
Жаль, что это была опечатка, я редактировал код. Код «create component & inject» закомментирован, это не является причиной ошибки компиляции. –
Собственно, это возможно. Проверьте мой ответ – Pelocho