Мне нужно вставить экземпляр "RxPermissions" RX Permissions lib в мой фрагмент.
Это мой (основной) класс фрагментов:
public class MapFragment extends Fragment {
//an empty ctor
@Inject
RxPermissions rxPermissions; //need inject.
@Override
public void onAttach(Context context) {
AndroidSupportInjection.inject(this); //for injection
super.onAttach(context);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//When i not use injection for rxPermissions -> rxPermissions = new RxPermissions(getActivity());
if(rxPermission.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
///TODO: implement isGranted logic
}
}
}
Вот мои MapFragmentSubComponent и MapFragmentSubModule для добавления в MapFragment:
@Subcomponent
public interface MapFragmentSubComponent extends AndroidInjector<MapFragment> {
@Subcomponent.Builder
public abstract class Builder extends AndroidInjector.Builder<MapFragment>{
}
}
@Module(subcomponents = MapFragmentSubComponent.class)
public abstract class MapFragmentSubModule {
@Binds
@IntoMap
@FragmentKey(MapFragment.class)
abstract AndroidInjector.Factory<? extends Fragment> bindMapFragmentInjectorFactory(MapFragmentSubComponent.Builder builder);
//Contains here my provider method for example viewmodelfactory provide.
//I need (i think) provide rxPermissions here. but how ?
}
И MapFragmentSubModule, установленный в AppComponent с @Component (modules = {MapFragmentSubmodule.class})
Так, как я могу ввести RxPermissions, чтобы фрагментировать или другой? (бывшая деятельность?)
Обновление для @Jeff Bowman 29 июня в 18:39 комментарий:
Так. Я внедряю хэш активности в MainActivity (это работа), но он не наследуется в MapFragment. Могу ли я решить эту проблему с помощью dagger-android lib? (Или использовать решение старой моды в стиле кинжала 2 для решения этой проблемы?)
Вот мое сообщение об ошибке:
error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] java.lang.Integer cannot be provided without an @Inject constructor or an @Provides-annotated method.
java.lang.Integer is injected at
.ui.main.map.MapFragment.activityHash
.ui.main.map.MapFragment is injected at
dagger.android.AndroidInjector.inject(T)
component path: .component.AppComponent ? .module.BuildersModule_BindMapFragment.MapFragmentSubcomponent
Так что мне нужен хэш активности из MainActivityModule в MapFragment.