Мое название вопроса - я ошибаюсь, но я не знаю, что написать.В настоящее время я инициализирую validateBasicListener в RegistrationMainFragment из onAttach RegistrationBasicChildFragment, но в основном я хочу добавить его с помощью dagger2, но не знаю, как это сделать, мой код выглядит следующим образом:
public class SignupMainFragment extends DaggerFragment implements SignUPContract.View{
@Inject
SignUPContract.Presenter signUPPresenter;
/* This is being initialized from SignupBasicChildFragment onAttach,
but i want it to inject it with Dagger2, but don't know how
to do it. */
public BasicSignUp validateBasicListener;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.fragment_signup, container, false);
}
}
Этомой модуль для RegistrationMainFragment
public abstract class SignupModule {
@FragmentScoped
@Binds
abstract SignUPContract.Presenter signUpPresenter(SignUPPresenter presenter);
@FragmentScoped
@Binds
abstract SignUPContract.View signUpView(SignupMainFragment loginFragment);
@FragmentChildScoped
@ContributesAndroidInjector(modules = BasicModule.class)
abstract SignupBasicChildFragment signupBasicChildFragment();
}
Это мой другой фрагмент, где инициализируется интерфейс регистрацииMainFragment,
public class SignupBasicChildFragment extends DaggerFragment implements BasicContract.View{
@Inject
BasicContract.Presenter presenter;
@Override
public void onAttach(Context context) {
super.onAttach(context);
((SignupMainFragment) getParentFragment()).validateBasicListener = this; // I want to inject this with dagger 2
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.fragment_child_signupbasic, container, false);
}
}
модуль для выше,
@Module
public abstract class BasicModule {
@FragmentChildScoped
@Binds
abstract BasicContract.Presenter basicPresenter(BasicPresenter presenter);
@FragmentChildScoped
@Binds
abstract BasicContract.View basicView(SignupBasicChildFragment loginFragment);
}
Это мойинтерфейс, который должен быть вставлен из RegistrationBasicChildFragment в RegistrationMainFragment,
public interface BasicSignUp
{
void signUpValidateBasic();
}