ale*_*lex 5 android dependency-injection dagger android-volley
我有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不得不使用包括MyAppModule
对ActivityModule
,如果没有它,应用程序崩溃说它能找到一个构造函数Context
,无法注入Activity
的Context
.
图表配置正确吗?我正在将模块添加到图中,Application
并且在a中BaseActivity
我觉得它已经足够了,我不需要包含,但我不确定我是否完全理解了这个的配置过程.
编辑
像这样,匕首没有错误,但如果我尝试注入Activity
Context
,在运行时它是null
.
如果有人感兴趣的话,解决方案是删除
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
}
Run Code Online (Sandbox Code Playgroud)
从 MyAppModule 并将其放入 ActivityModule 中。
归档时间: |
|
查看次数: |
2773 次 |
最近记录: |