問題タブ [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.
android - Androidの短剣は注射を提供できません
Android アプリに短剣を含めたい。ServiceConnectorインターフェイスを実装するFakeServiceConnector、NetServiceConnectorの 2 つのクラスがあります。
だから私は自分の活動にコードを入れました
Abd 依存関係を解決するためのプロバイダーを作成します
しかし、ボタンを押すとserviceConnectorはnullです。だから私の質問は:
1) 私は自分のライブラリに dagger-1.1.0.jar と java.inject.jar のみを含めています。適切なダガーのインストールには十分ですか?
2) Android の作成など、短剣用に書いたよりも多くのコードを書く必要がありますか?
android - Dagger: ビルドに応じて異なる ObjectGraph をインスタンス化する方法
Dagger を使用して Dependency Injection を学習しようとしています。
あなたのクラスでは、クライアント コードが依存するオブジェクトを直接インスタンス化するのではなく、@Inject で宣言し、モジュールを介して ObjectGraphs を作成し、ObjectGraph からオブジェクトを取得することを理解しています。
ただし、そのコードはすべて、ObjectGraph の作成に使用しているモジュール (この例では DripCoffeeModule) に依存しています。
これを Android アプリで使用したいと考えています。デバッグ ビルドではクラスの特定の実装が必要ですが、リリース ビルドでは実装が異なります。
どうすればいいですか?モジュールが必要な特定の実装を提供するように build.xml ant スクリプトを設定するにはどうすればよいですか? (または正しいモジュールを選択する)...
ありがとうございました。
java - injects 句のクラスを注入できない場合、コンパイル時にダガーが失敗しないのはなぜですか?
私はこのクラスを持っています:
...そしてこのモジュール...
これがコンパイル時エラーを生成するはずだと考えるのは間違っていますか? 実行時に私は得る:
(クラスには @Inject アノテーション付きコンストラクターがないため)。しかし、短剣はコンパイル時にそれを知っているべきではありませんか?
android - 短剣の DI とジェネリック クラス
Dagger のオブジェクト グラフからジェネリック クラスを作成しようとしています。コーヒー マシンの例を挙げると、汎用的な CoffeeApp クラスを作成するパターンはありますか?
例えば...
ありがとう!
android - ActivityIntrumentationTestCase2 を使用した Dagger のカスタム Application クラス
カスタム アプリケーションを ActivityInstrumentationTestCase2 に「注入」しようとして行き詰まりました。
単体テストとインジェクションを実行できるようにするために、アプリケーションは次のようなインターフェイスを実装します。
アクティビティでは、次を使用してグラフを取得します。
この種のインターフェースを使用すると、単体テストにモックの依存関係を挿入できます。しかし、機能テストを実行したい場合、次の例外が発生します。
これは、この種のテストが私のインターフェースを実装せずにデフォルトのアプリケーションを注入するためであり、私の質問は次のとおりです。これに対するカスタムTestRunnerなどのような解決策はありますか?
ありがとうございました :)
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
調べ始めたところなので、他のフレームワークも同様に機能します。