Я умею вводить зависимость в действия и нормально работать.но вызов той же зависимости во фрагменте не дает доступа.
Это то, что я сделал.
App.Java
public class App extends MultiDexApplication implements HasActivityInjector, HasFragmentInjector {
@Inject
DispatchingAndroidInjector<Activity> activityInjector;
@Inject
DispatchingAndroidInjector<Fragment> fragmentInjector;
private AppComponent mComponent;
@Override
public void onCreate() {
super.onCreate();
mComponent = DaggerAppComponent.builder().application(this).build();
mComponent.inject(this);
}
@Override
public DispatchingAndroidInjector<Activity> activityInjector() {
return activityInjector;
}
@Override
public AndroidInjector<Fragment> fragmentInjector() {
return fragmentInjector;
}
}
Это AppComponent.Java
@Singleton
@Component(modules = { AndroidInjectionModule.class, ActivityModule.class, FragmentModule.class})
public interface AppComponent extends AndroidInjector<App> {
void inject(App app);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
AppComponent build();
}
}
Это класс ActivityModule.Java
@Module
public abstract class ActivityModule {
@ContributesAndroidInjector
abstract MainActivity contributeMainActivityInjector();
@ContributesAndroidInjector
abstract MyActivity contributeCampaignActivityInjector();
}
Это класс FragmentModule.java
@Module
public abstract class FragmentModule {
@ContributesAndroidInjector
abstract MyFragment bindMyFragment();
}
Теперь в моем классе MyFragment, где я хочу внедрить эту зависимость.сверху я добавляю эти строки внутри класса
@Inject
ImageDownloaderApi imageDownloaderApi;
, а затем, чтобы проверить функцию onCreateView, я сделал это, чтобы проверить, работает ли моя зависимость следующим образом
boolean injected = imageDownloaderApi == null ? false : true;
Log.d(this.getClass().getSimpleName(), "Dependency worked: "+ String.valueOf(injected));
И она возвращает мне falseEverytime.
, где в активах работает один и тот же код.еще одна вещь, которую я делаю в действиях, это добавление этой строки ниже в onCreate, как это
@Override
protected void onCreate(Bundle savedInstanceState) {
AndroidInjection.inject(this); // this line
super.onCreate(savedInstanceState);
, когда при попытке добавить ту же строку в onCreateView во фрагменте
AndroidInjection.inject(this);
она отображает красную линиюниже этого.и если я заменю это getActivity.Это дало мне ошибку во время выполнения.
Пожалуйста, посмотрите и руководство, где я не прав?
Правильный ли процесс, который я делаю для фрагмента?как это явно работает в деятельности.
Заранее спасибо за ваше время.