【问题标题】:Android using Dependency Injection on FragmentsAndroid 在 Fragments 上使用依赖注入
【发布时间】:2016-10-21 05:24:00
【问题描述】:

我可以对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);
}

如何编辑或创建其他类组件和模块以将领域注入其中?顺便说一句,我的应用程序上有更多片段

提前致谢

【问题讨论】:

  • 您实际上不需要将void inject (MyFragment fragment) 添加到ApplicationComponent 中吗?
  • @EpicPandaForce 我测试它先生,但之后我无法注入,如果我在ApplicationComponent 上定义它,我该如何注入?

标签: android dependency-injection


【解决方案1】:

只需在您的组件中添加另一个目标方法,例如,

@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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多