Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – Dagger活动图和分离的模块大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个Android应用程序,我正在尝试使用匕首.我决定使用全局图活动图.我有三个模块:

AndroidModule

@Module(library = true)
public class AndroidModule {

  private final MApplication mApplication;

  public AndroidModule(MyApplication application) {
    mApplication = application;
  }

  @Provides @Singleton @ForApplication Context provideApplicationContext() {
    return mApplication;
  }
}

MyAppModules

@Module(
    injects = {
            MainActivity.class,AddFragment.class,AddMapFragment.class,MyActivity.class,ListFragment.class,MyMapFragment.class,RetainFragment.class,SingleActivity.class,UserActivity.class,UserLoginFragment.class,UserProfileActivity.class,UserProfileFragment.class,UserRegisterFragment.class,WelcomeFragment.class
    },complete = false,library = true,includes = ActivityModule.class
)
public class MyAppModule {

  private final Bus mBus = new Bus();

  @Provides @Singleton Bus provideBus() {
    return mBus;
  }

  @Provides @Singleton
  RequestQueue provideRequestQueue(@ForApplication Context context) {
    return Volley.newRequestQueue(context);
  }

  @Provides @Singleton Api provideApi(RequestQueue queue) {
    return new AppApi(queue);
  }

  @Provides Logger provideLogger() {
    return new MyLogger();
  }
}

ActivityModule

@Module(
    complete = false,library = true
)
public class ActivityModule {

  private BaseActivity mActivity;
  public ActivityModule() {}

  public ActivityModule(BaseActivity activity) {
    mActivity = activity;
  }

  @Provides @Singleton @ForActivity Context provideActivityContext() {
    return mActivity;
  }

  @Provides @Singleton LocationClientFactory provideLocationClientFactory() {
    return new LocationClientFactory(mActivity);
  }
}

我不得不在MyAppModule上使用include作为ActivityModule,没有它,应用程序崩溃说它可以在Context上找到一个构造函数并且无法注入Activity的Context.

图表配置正确吗?我将模块添加到应用程序和BaseActivity中的图形中,我认为这已经足够了,我不需要包含,但我不确定我完全理解这个的配置过程.

编辑

像这样,dagger没有错误但是如果我尝试注入一个Activity Context,那么在运行时它就是null.

最佳答案
如果有人有兴趣,解决方案就是删除

injects = {
        MainActivity.class,WelcomeFragment.class
}

来自MyAppModule并将其放在ActivityModule中.

大佬总结

以上是大佬教程为你收集整理的android – Dagger活动图和分离的模块全部内容,希望文章能够帮你解决android – Dagger活动图和分离的模块所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: