問題タブ [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 に答える
11041 参照

java - Dagger for Android: setContentView の呼び出し後にオブジェクト グラフにアクティビティを注入する

Activity次のように、Android で Dagger を使用して、のインスタンスを別のクラスに挿入したいと考えています。

注入はできますが、 のすべてのフィールドはActivity注入null時です

私が注射をしている方法は次のとおりです。

MyActivityはそれ自体がモジュールです。

これは私のメインモジュールです

そして、Applicationオブジェクト グラフをブートストラップするクラスです。

を呼び出した後setContentView、明示的に注入を実行する方法を探しています。

どうすればこれを行うことができますか?


編集1:

このように動作するようになりましたが、これが「正しい方法」であるかどうかはわかりません。私がすることは

  1. Activity をModuleコンストラクターに渡す
  2. 適切なインスタンスが に渡されるように、実行ObjectGraph にをビルドするようにしてください。setContentView()ActivityObjectGraph

Activityはもはや短剣ではありませんModule

これは、コードで次のように変換されます。

そして、これが私のActivity見た目です:

このソリューションは、この回答で Jesse Wilson によって提起されたポイントに対処しているようです。ただし、が作成されるたびObjectGraphに がビルドされるため、パフォーマンスが心配です。Activity

何かご意見は?

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

android - グラフの作成時にダガーが NoSuchMethodException をスローする

依存性注入フレームワークとしてDaggerを使用しています。これまでのところ問題なく動作していますが、Android 単体テストに Dagger を使用しているときに問題が発生し、その理由がわかりません (おそらく Dagger の誤った使用が原因です)。

次の例外があります

例外を生成するコードは次のとおりです。

モジュールCSApplication$ProdModuleは、アプリケーションの製品版で使用され、適切に機能することに注意してください。

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

android - Daggerは、ActivityInstrumentationTestCase2テストの依存関係の注入をサポートしていますか

ActivityInstrumentationTestCase2を継承するAndroid機能テストでDaggerを使用しようとしています。

セットアップコードは次のようになります。

を呼び出すことによって起動されるOnCreateメソッドはsuper.getActivity()、TestModuleによって提供されるクラスを使用しません。しかし、アクティビティを手動で(テストコンテキストの外で)実行すると、すべての適切なクラスが非テストモジュールによって提供/注入されます。

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

java - ダガー:POJOでのフィールドインジェクション

Guideやその他のDIライブラリを試したことはありませんが、AndroidアプリケーションにsquareのDaggerを使用しようとしています。Frgementsには最適ですが、POJOには有効ではありません。ユーザーガイドは、詳細に説明されていないため、DIに関するある程度の知識があることを前提としています。restAdapaterPOJOに注入するにはどうすればよいですか。同じコードでフィールドインジェクションを行うと、Fragmentで機能します。

// POJO

すべてのフラグメントは以下から派生しており、DIはそれらで正常に機能します。Eric burkeによる最近の講演で、Androidがオブジェクトを構築するため、これが必要であると説明しています。

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

android - ダガーはモジュール上で注入可能なメンバーを見つけることができません

Androidプロジェクトの依存性注入にDaggerを使用しており、アプリを正常にコンパイルおよびビルドできます。オブジェクトグラフは正しく機能しているように見えますが、コンパイル時にエラーを取得するための依存関係としてdagger-compilerを追加すると、いくつかの奇妙なエラーが報告されます。

Ottoエラーは、EricBurkeがAndroidApp Anatomyのプレゼンテーションで@Provides注釈がないことについて言及しているもののように見えますが、以下に示すように、私はそうしています。

私のOttoとTaskQueueモジュールは次のとおりです。

..。

..。

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

android - 短剣と提供されたクラスへの依存

私は自分の Android アプリを「短剣化」していますが、それが自分のせいなのかフレームワークのせいなのかわからない小さな問題に直面しています。それが私なら、私は自分自身に非常に失望するでしょう:)

提供する次のクラスがあります。

次の(とりわけ)クラスを使用:

このクラスは、私の XmlServiceModule で次のように参照されます。

さて、問題は、提供されたクラスを注入することは合法ですか? XmlDataReader ctor の @Inject でエラーが発生しているため、public void XmlDataRead(org.xmlpull.v1.XmlPullParser) を注入できません。


編集: 申し訳ありませんが、私のサンプル コードにエラーがありましたが、以下のクリスチャンの回答を理解するために役立つ可能性があるため、そのままにしておきます。

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

android - メソッド get(クラス) 型の ObjectGraph は引数に適用できません

私のAndroidプロジェクトにいくつかの依存性注入を追加しようとしているので、私が見つけた例に従ってモジュールを作成しました

私は私のアプリケーションを持っています:

と活動

何が間違っているのか、何を見逃したのかわかりませんが、日食でエラーが表示されます:

ObjectGraph 型のメソッド get(Class) は、引数 (MyModuleModule) には適用されません。

この行でobjectGraph = ObjectGraph.get(new MyModule(this));

ビルドしようとすると、次のようになります。

my.android.app.MyModule の my.android.app.MyActivity に必要な my.android.lib.EventBus のバインドなし

誰かが私が間違っていることと私が忘れたことを教えてくれますか?

0 投票する
3 に答える
3440 参照

android - ProguardとDaggerを使用したリリースビルドでAndroidアプリがクラッシュする

私はAndroidアプリでProguardとDaggerを使用するのは初めてなので、誰かが私にいくつかの指針を教えてくれれば本当にありがたいです。

ProguardとDaggerがアプリケーションに実装されました。アプリがデバッグモードでインストールされている場合(つまり、Eclipseからプッシュされている場合)、アプリの実行に問題はありません。ただし、アプリのリリースビルドを実行すると、次のトレースでクラッシュします。

私は、https ://plus.google.com/108620120050432268974/posts/AAjvwg3Hmggからの提案に従い、proguard-project.txtに以下を実装しました。

しかし、それは問題を解決していないようです。提案?前もって感謝します。

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

android - Dagger と Robolectric を使用してサービスを注入する

TelephonyManagerDaggerでサービスを注入しようとしています。私はこのサンプルに従っています。クラスを拡張してグラフを作成し、含まれる場所Applicationを定義しました。将来、他のモジュールが含まれる予定です。ApplicationModuleServiceModule

編集:

Activityこれで、システム サービスが問題なくに注入されました。の中に行方不明でしFinderApplication.inject(this)Activity。インジェクションがありますが、 でのテストではまだインジェクションしませんRobolectric。この投稿の最後にテスト ケースを追加しました。

Edit-2: ApplicationModule削除および作成BaseActivity:

オンonCreateメソッド。私が得ているエラーは次のとおりです。

原因: java.lang.NoSuchMethodException: ServiceModule.()

しかし、空のコンストラクターを定義すると、注入されたクラスが必要なときに null ポインターが返されます。

FinderApplication.java

ServiceModule.java

SimCardActivityTest.java

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

java - ロボレクトリックとダガーのテスト

Robolectric (1.2) と Dagger を使用してアプリをテストしようとしています。

私のテスト モジュールは非常に単純です。

含まれている ServiceModule には XmlServiceModule が含まれています。

XmlPullParserFactory.newInstance()がヒットするまで、すべて問題ありません。Eclipse 内でデバッグできます。その時点で、私は恐ろしいものを受け取ります:

私はRobolectricとDaggerに比較的慣れていません。実装で何か間違ったことをしているのかもしれませんが、構成では考えていません。すべてが正常であることを確認するには、何を確認すればよいですか? このコードに明らかな間違いがありますか?