問題タブ [dagger]

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 投票する
1 に答える
790 参照

android - Androidの短剣は注射を提供できません

Android アプリに短剣を含めたい。ServiceConnectorインターフェイスを実装するFakeServiceConnectorNetServiceConnectorの 2 つのクラスがあります。

だから私は自分の活動にコードを入れました

Abd 依存関係を解決するためのプロバイダーを作成します

しかし、ボタンを押すとserviceConnectorはnullです。だから私の質問は:

1) 私は自分のライブラリに dagger-1.1.0.jar と java.inject.jar のみを含めています。適切なダガーのインストールには十分ですか?

2) Android の作成など、短剣用に書いたよりも多くのコードを書く必要がありますか?

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

android - Dagger: ビルドに応じて異なる ObjectGraph をインスタンス化する方法

Dagger を使用して Dependency Injection を学習しようとしています。

あなたのクラスでは、クライアント コードが依存するオブジェクトを直接インスタンス化するのではなく、@Inject で宣言し、モジュールを介して ObjectGraphs を作成し、ObjectGraph からオブジェクトを取得することを理解しています。

ただし、そのコードはすべて、ObjectGraph の作成に使用しているモジュール (この例では DripCoffeeModule) に依存しています。

これを Android アプリで使用したいと考えています。デバッグ ビルドではクラスの特定の実装が必要ですが、リリース ビルドでは実装が異なります。

どうすればいいですか?モジュールが必要な特定の実装を提供するように build.xml ant スクリプトを設定するにはどうすればよいですか? (または正しいモジュールを選択する)...

ありがとうございました。

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

java - injects 句のクラスを注入できない場合、コンパイル時にダガーが失敗しないのはなぜですか?

私はこのクラスを持っています:

...そしてこのモジュール...

これがコンパイル時エラーを生成するはずだと考えるのは間違っていますか? 実行時に私は得る:

(クラスには @Inject アノテーション付きコンストラクターがないため)。しかし、短剣はコンパイル時にそれを知っているべきではありませんか?

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

android - 短剣の DI とジェネリック クラス

Dagger のオブジェクト グラフからジェネリック クラスを作成しようとしています。コーヒー マシンの例を挙げると、汎用的な CoffeeApp クラスを作成するパターンはありますか?

例えば...

ありがとう!

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

android - ActivityIntrumentationTestCase2 を使用した Dagger のカスタム Application クラス

カスタム アプリケーションを ActivityInstrumentationTestCase2 に「注入」しようとして行き詰まりました。

単体テストとインジェクションを実行できるようにするために、アプリケーションは次のようなインターフェイスを実装します。

アクティビティでは、次を使用してグラフを取得します。

この種のインターフェースを使用すると、単体テストにモックの依存関係を挿入できます。しかし、機能テストを実行したい場合、次の例外が発生します。

これは、この種のテストが私のインターフェースを実装せずにデフォルトのアプリケーションを注入するためであり、私の質問は次のとおりです。これに対するカスタムTestRunnerなどのような解決策はありますか?

ありがとうございました :)

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

android - 製品フレーバーの Android カスタマイズ ワークフロー

基本的に単一のアプリのホワイトラベルである製品フレーバーがたくさんあるアプリがあります。ただし、クライアントがわずかに異なるものを求めているため、一部のフレーバーでメイン フローから逸脱することがあります。これまでのところ、これらのケースのコードを編集し、スパゲッティ コード (多くの if と else) を使用して、他のアプリが壊れないようにしています。言うまでもなく、これは非常にスケーラブルな (またはまともな) 方法ではありません。

1 つのオプションは、アクティビティ クラスを productFlavor ソース フォルダーsrc/flavor1/java/AnActivity.java( src/flavor2/java/AnActivity.java、 など) に書き込むことです。productFlavor コードはクラスをオーバーライドできないためsrc/main、カスタマイズがない場合でも、新しいフレーバーごとに同じクラスをコピーする必要があります。私はこのオプションがあまり好きではありません。その結果、多くの冗長なコードが発生し、クラス名はもはやそれほど説明的ではなくなります。別のことをしている可能性がある場合でも、他のクラスをオーバーライドするには、すべて同じ名前にする必要があるためです。

Dagger別のオプションは、さまざまな実装のインテントを構築しObjectGraphて注入するようなものを使用することです。たとえば、 の場合flavor1、ボタン X がクリックされると、 のインテントActivityAが注入され、 の場合flavor2、 のインテントActivityBが注入されます。

これはこれを行うためのより良い方法のように思えますが、デフォルトでバインディングをオーバーライドするクラスを実装する方法がまだわかりませんObjectGraph

実装やその他のオプションに関するアイデアはありますか? 依存関係の挿入とテストをDagger調べ始めたところなので、他のフレームワークも同様に機能します。