i have an Activity with one fragment. I am trying to inject the fragment but i am getting 'No injector was found for com.tsiro.dogvip.login.signin.SignInFrgmt' exception.
ActivityModule:
@Module(includes = BaseActivityModule.class)
public abstract class LoginActivityModule {
@PerFragment
@ContributesAndroidInjector(modules = SignInFragmentModule.class)
abstract SignInFrgmt signInFrgmtInjector();
@Binds
@PerActivity
abstract Activity activity(LoginActivity loginActivity);
}
FragmentModule:
@Module(includes = BaseFragmentModule.class)
public abstract class SignInFragmentModule {
@Binds
@Named(BaseFragmentModule.FRAGMENT)
@PerFragment
abstract Fragment fragment(SignInFrgmt signInFrgmt);
}
Fragment class extends BaseFragment where HasSupportFragmentInjector is implemented.
BaseFragment:
public abstract class BaseFragment extends Fragment implements HasSupportFragmentInjector, Lifecycle.View {
@Inject
DispatchingAndroidInjector<Fragment> fragmentInjector;
public abstract Lifecycle.ViewModel getViewModel();
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// Perform injection here before M, L (API 22) and below because onAttach(Context)
// is not yet available at L.
AndroidSupportInjection.inject(this);
}
super.onAttach(activity);
}
@Override
public void onAttach(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Perform injection here for M (API 23) due to deprecation of onAttach(Activity).
AndroidSupportInjection.inject(this);
}
super.onAttach(context);
}
@Override
public void onStart() {
super.onStart();
getViewModel().onViewAttached(this);
}
@Override
public void onResume() {
super.onResume();
getViewModel().onViewResumed();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
getViewModel().onViewDetached();
}
@Override
public AndroidInjector<Fragment> supportFragmentInjector() {
return fragmentInjector;
}
}
Can anybody tell me what i am missing?