Вставить интерфейс слушателя в родительский фрагмент из OnAttach - PullRequest
0 голосов
/ 19 мая 2018

Мое название вопроса - я ошибаюсь, но я не знаю, что написать.В настоящее время я инициализирую 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();
}
...