問題タブ [dagger-2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
11198 参照

android - Dagger2 コンポーネント (スコープなし) はスコープ付きコンポーネントに依存できません - エラー

https://github.com/svenjacobs/android-dagger2-exampleをコンパイルしようとしています が、スコープされたコンポーネントに応じて、スコープされていないコンポーネントに関連するエラーが発生しています。(Android Studio 1.1、Gradle 2.2.1)。また、WITH FRAGMENTS を使用した他の Dagger2 Android の例を誰かが知っている場合は、それらについて知りたいと思います。

更新: フラグメントを使用した非常に基本的な別の例を次に示します: https://github.com/gk5885/dagger-android-sample

これは、明らかにスコープが設定されていないファイル ActivityComponent です。

そして、スコープ付きコンポーネントは次のとおりです。

0 投票する
2 に答える
957 参照

android - dagger2 でテスト モジュールを注入する

AndroidアプリでDagger2を使用しています。基本的にはHttpClient(インターフェース)を に注入しますMainActivity

これまでのところ、期待どおりに動作します。今、代わりにMainActivity使用したい場所のユニットテスト(アンドロイドインストルメンテーションテストではない)をいくつか書きたいと思います。TestMainActivityModuleMainActivityModule

私の質問は:の代わりに強制的MainActivityに使用するにはどうすればよいですか? そのための良い解決策はありますか?TestMainActivitiyModuleMainActivityModule

私の現在のアプローチは、継承を使用してオーバーライドするgetModule()ことです。

TestMainActivityの代わりに単体テストを実行しますMainActivity

うまくいくと思いますが、このアプローチで直面している問題の1つは、で指定できないため、から始めることができないことTestMainActivityですIntentAndroidManifest.xml

Androidでdagger2を使用した単体テストのより良いアプローチを知っている人はいますか?

0 投票する
1 に答える
7218 参照

java - Dagger2 を使用してあらゆる種類のオブジェクトに依存関係を注入する方法は?

http://konmik.github.io/snorkeling-with-dagger-2.htmlによると、追加するだけです

AppComponent.java に挿入しますが、これは記事の例では機能しません。

フラグメントに依存関係を注入しようとすると、注入されたメンバーは null のままです。ここで見逃している明らかなエラーは何ですか?

関連ソース:

ApplicationComponent.java

ApplicationModule.java

ActivityComponent.java

ActivityModule.java

BaseApplication.java

BaseActivity.java

BaseFragment.java

ListFragment.java

ListFragmentPresenterImpl.java

Dagger_ActivityComponent では、生成されたコードは次のようになります。

ここにbaseFragmentMemebersInjectorがあってはいけませんか?

ありがとう!

0 投票する
2 に答える
10335 参照

java - ダガー 2 アクティビティ インジェクションが機能しない

新しいダガー 2 を試しています。実装するのは初めてですが、うまくいきません。私は概念を理解したと思います。ここでの例を理解しています

私の例のために少し変更した同じ構造をコピーしようとしています。

これは、必要なクラスを定義した Graph を拡張する AppComponent です。

次に、各モジュール内で、対応するクラスを提供しています。ここから、すべてがうまく機能し、Dagger が Dagger_EFAppComponent を正しく構築するように縫い合わせます。

次に、Application クラスで、コンストラクターを使用して初期化します

次に、私の目標は、アクティビティに ImageLoader と EventBus を挿入することです。そのために、ActivityComponent を作成します。

次に、アクティビティから inject を呼び出します。

したがって、inject メソッドの呼び出し後にアクティビティで @Inject EventBus eventBus を宣言したため、注入する必要があります。そうではありません。

したがって、私のアプリと例を段階的にデバッグおよび追跡した後、Dagger_ActivityComponent が正しくビルドされていないことに気付きました。

初期化メソッドが空で、プロバイダーが変数として宣言されていません。

何か不足していますか?私は一日中それを機能させようとしてきましたが、成功していません。

助けに感謝します。

0 投票する
1 に答える
8887 参照

java - Dagger 2 シングルトンが機能しない

Dagger 2 を使用して、1 つのスコープ内の複数の場所にシングルトン オブジェクトを挿入しようとしています。ただし、私のソリューションでは代わりに毎回新しいインスタンスが作成されるようです。

このテスト プロジェクトには、DaggerModule を初期化する MainActivity があります。DaggerModule はオブジェクト Box と Cat を提供し、Box はパラメーターとして Cat を取ります。また、MainActivity で Cat を取り込みます。最後に、注入された両方の Cat 変数の参照 (それぞれ Box と MainActivity で) を確認しますが、それらは同じインスタンスではありません。

代わりに MainActivity で provideCat() を 2 回呼び出すと、同じインスタンスが提供されます。

主な活動:





前もって感謝します!

編集: provideBox 内から直接 provideCat を呼び出す代わりに、provideBox が Cat 引数を取り、それを使用して Box を作成する場合に機能します。

MainActivity での provideCat の呼び出しと、DaggerModule の provideBox 内からの呼び出しの違いは何ですか? Dagger コンパイラが外部クラスと同じように DaggerModule を処理せず、そこで provideCat を呼び出すと注釈が適用されない可能性がありますか?

0 投票する
0 に答える
630 参照

android - Dagger 2 で @Singleton ではなく、独自に定義したスコープを使用するのはなぜですか?

Dagger 2 では、スコープを作成できます。@Singleton アノテーションを使用してこれを行うのはなぜですか?

たとえば、このコードは u2020 のフォークからのものです (元は Jake Wharton によって作成されました)。Application スコープを定義します。

ここには、Gallery スコープを定義する別のスコープがあります。

すべてのソースコードはここにあります: u2020 using Dagger 2

違いは文字通りセマンティクスであり、どちらも同じことを行いますか?

ありがとう。