私は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私はそれなしで、使用ActivityModule
ためMyAppModule
に含める必要がありました
@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);
}
}
を、アプリケーションがクラッシュしましたそれは0でコンストラクタを見つけることができると言ってとActivity
のContext
を挿入できませんでした。
グラフが正しく設定されていますか?私はApplication
とBaseActivity
のグラフにモジュールを追加しています。それは十分だと思っていましたが、インクルードは必要ありませんでしたが、私はこれを完全に理解していません。このよう
編集
、短剣はエラーを与えていないが、私は、実行時に、Activity
Context
を注入しようとする場合にはnull
です。誰もが興味を持っている場合
これは、([Activity Graphs](https://github.com/square/dagger/tree/master/examples/android-activity-graphs)サンプルを使用している場合)アクティビティオブジェクトグラフは、 MyAppModuleを 'addsTo'します。また、あなたがあなたのアクティビティモジュールの 'include'を行っているなら、あなたはアクティビティが生きている時だけであることを望む前に、グラフの一部が構築されていると確信しています。 –
答えとしてそれをチェックしてください – Caipivara
ちょっと@alex、アプリケーションとアクティビティのクラスでどのようにしてグラフを作成しましたか? – bogdan