Android использует инъекцию зависимостей от фрагментов

1

Я могу использовать Injection Dependency для Realm успешно, я могу использовать @Inject в действии без каких-либо проблем, теперь я хочу использовать это и внедрить это во Фрагменты, так как я начинаю использовать этот метод, я не могу сделайте это

ApplicationModule класс:

@Module
public class ApplicationModule {

    @Provides
    Context provideApplicationContext() {
        return AlachiqApplication.getInstance();
    }

    @Provides
    @Singleton
    RealmConfiguration provideRealmConfiguration() {
        final RealmConfiguration.Builder builder = new RealmConfiguration.Builder()
                .schemaVersion(Migration.SCHEMA_VERSION)
                .deleteRealmIfMigrationNeeded()
                .migration(new Migration());
        return builder.build();
    }

    @Provides
    Realm provideDefaultRealm(RealmConfiguration config) {
        return Realm.getInstance(config);
    }
}

ApplicationComponent класс:

@Component(modules = ApplicationModule.class)
@Singleton
public interface ApplicationComponent {
    void inject(ActivityRegister target);
    void inject(ActivityMain target);
    void inject(FragmentEbooks target);
    void inject(FragmentDocuments target);
    void inject(SocketServiceProvider target);
}

как я могу отредактировать или создать другой компонент класса и модуль, чтобы внедрить в него? кстати, у меня больше фрагментов на моем приложении

Заранее спасибо

  • 0
    Разве вам просто не нужно добавлять void inject (MyFragment fragment) в ApplicationComponent ?
  • 0
    @EpicPandaForce Я проверяю это, сэр, но после этого я не могу это внедрить, если я определю это на ApplicationComponent как я могу ввести?
Теги:
dependency-injection

1 ответ

0
Лучший ответ

Просто добавьте другой целевой метод в свой компонент, например,

@Component(modules = ApplicationModule.class)
@Singleton
public interface ApplicationComponent {
  void inject(ActivityRegister target);
  void inject(ActivityMain target);
  void inject(SocketServiceProvider target);
  void inject(MyFragment target);
}

И в вашем фрагменте делайте то же самое, что делаете в своей деятельности.

public class MyFragment extends Fragment{
   @inject Realm realm;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
    ((MyApplication) getActivity().getApplication()).getComponent().inject(this);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню