Adaga 2.10 / 2.11 que injeta Atividade falhando
Eu tenho tentado, sem sucesso, injetar a atividade em uma classe ViewUtils. Segui algumas postagens diferentes, mas não consigo entender o que estou perdendo na minha implementação.
Sei que provavelmente é uma repetição dos posts abaixo e peço desculpas por isso, mas sinceramente não consigo ver o que estou perdendo. Estas são as postagens que encontrei:
Dagger 2.10 Subcomponentes e construtores AndroidComo criar módulos com escopo personalizado no punhal 2.10https://google.github.io/dagger/subcomponents.htmlMinha implementação é a seguinte:
AppComponent
@Component(modules = {
AppModule.class, AndroidSupportInjectionModule.class, ActivityBindingModule.class
}) @Singleton public interface AppComponent extends AndroidInjector<EmblyApp> {
@Component.Builder abstract class Builder extends AndroidInjector.Builder<EmblyApp> {}
}
ActivityBindingModule
@Module public abstract class ActivityBindingModule {
@ContributesAndroidInjector
abstract LoginActivity loginActivity();
}
LoginSubcomponent
@Subcomponent(modules = LoginSubcomponent.LoginActivityModule.class)
public interface LoginSubcomponent extends AndroidInjector<LoginActivity> {
@Subcomponent.Builder abstract class Builder extends AndroidInjector.Builder<LoginActivity> {}
@Module abstract class LoginActivityModule {
@Binds abstract Activity bindActivity(LoginActivity activity);
@Provides @ActivityScope static ViewUtils viewUtils(Activity activity) {
return new ViewUtils(activity);
}
}
}
ViewUtils
public class ViewUtils {
private final Activity activity;
@Inject public ViewUtils(Activity activity) {
this.activity = activity;
}
}
E o erro que estou recebendo é:
Error:(14, 22) error: [dagger.android.AndroidInjector.inject(T)] android.app.Activity cannot be provided without an @Inject constructor or from an @Provides-annotated method.
android.app.Activity is injected at
com.emblyapp.app.ui.helpers.ViewUtils.<init>(activity)
com.emblyapp.app.ui.helpers.ViewUtils is injected at
com.emblyapp.app.ui.authentication.login.LoginActivity.viewUtils
com.emblyapp.app.ui.authentication.login.LoginActivity is injected at
dagger.android.AndroidInjector.inject(arg0)
O que há de errado aqui? Obrigado pela ajuda!
Edit: esqueci de mencionar que o meu LoginActivity tem a injeção com o AndroidInjection
@Override protected void onCreate(Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState);
}