問題タブ [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.
java - Dagger for Android: setContentView の呼び出し後にオブジェクト グラフにアクティビティを注入する
Activity
次のように、Android で Dagger を使用して、のインスタンスを別のクラスに挿入したいと考えています。
注入はできますが、 のすべてのフィールドはActivity
注入null
時です。
私が注射をしている方法は次のとおりです。
MyActivity
はそれ自体がモジュールです。
これは私のメインモジュールです
そして、Application
オブジェクト グラフをブートストラップするクラスです。
を呼び出した後setContentView
、明示的に注入を実行する方法を探しています。
どうすればこれを行うことができますか?
編集1:
このように動作するようになりましたが、これが「正しい方法」であるかどうかはわかりません。私がすることは
- Activity を
Module
コンストラクターに渡す - 適切なインスタンスが に渡されるように、実行
ObjectGraph
後にをビルドするようにしてください。setContentView()
Activity
ObjectGraph
私Activity
はもはや短剣ではありませんModule
。
これは、コードで次のように変換されます。
そして、これが私のActivity
見た目です:
このソリューションは、この回答で Jesse Wilson によって提起されたポイントに対処しているようです。ただし、が作成されるたびObjectGraph
に がビルドされるため、パフォーマンスが心配です。Activity
何かご意見は?
android - グラフの作成時にダガーが NoSuchMethodException をスローする
依存性注入フレームワークとしてDaggerを使用しています。これまでのところ問題なく動作していますが、Android 単体テストに Dagger を使用しているときに問題が発生し、その理由がわかりません (おそらく Dagger の誤った使用が原因です)。
次の例外があります
例外を生成するコードは次のとおりです。
モジュールCSApplication$ProdModuleは、アプリケーションの製品版で使用され、適切に機能することに注意してください。
android - Daggerは、ActivityInstrumentationTestCase2テストの依存関係の注入をサポートしていますか
ActivityInstrumentationTestCase2を継承するAndroid機能テストでDaggerを使用しようとしています。
セットアップコードは次のようになります。
を呼び出すことによって起動されるOnCreateメソッドはsuper.getActivity()
、TestModuleによって提供されるクラスを使用しません。しかし、アクティビティを手動で(テストコンテキストの外で)実行すると、すべての適切なクラスが非テストモジュールによって提供/注入されます。
java - ダガー:POJOでのフィールドインジェクション
Guideやその他のDIライブラリを試したことはありませんが、AndroidアプリケーションにsquareのDaggerを使用しようとしています。Frgementsには最適ですが、POJOには有効ではありません。ユーザーガイドは、詳細に説明されていないため、DIに関するある程度の知識があることを前提としています。restAdapater
POJOに注入するにはどうすればよいですか。同じコードでフィールドインジェクションを行うと、Fragmentで機能します。
// POJO
すべてのフラグメントは以下から派生しており、DIはそれらで正常に機能します。Eric burkeによる最近の講演で、Androidがオブジェクトを構築するため、これが必要であると説明しています。
android - ダガーはモジュール上で注入可能なメンバーを見つけることができません
Androidプロジェクトの依存性注入にDaggerを使用しており、アプリを正常にコンパイルおよびビルドできます。オブジェクトグラフは正しく機能しているように見えますが、コンパイル時にエラーを取得するための依存関係としてdagger-compilerを追加すると、いくつかの奇妙なエラーが報告されます。
Ottoエラーは、EricBurkeがAndroidApp Anatomyのプレゼンテーションで@Provides
注釈がないことについて言及しているもののように見えますが、以下に示すように、私はそうしています。
私のOttoとTaskQueueモジュールは次のとおりです。
..。
..。
android - 短剣と提供されたクラスへの依存
私は自分の Android アプリを「短剣化」していますが、それが自分のせいなのかフレームワークのせいなのかわからない小さな問題に直面しています。それが私なら、私は自分自身に非常に失望するでしょう:)
提供する次のクラスがあります。
次の(とりわけ)クラスを使用:
このクラスは、私の XmlServiceModule で次のように参照されます。
さて、問題は、提供されたクラスを注入することは合法ですか? XmlDataReader ctor の @Inject でエラーが発生しているため、public void XmlDataRead(org.xmlpull.v1.XmlPullParser) を注入できません。
編集: 申し訳ありませんが、私のサンプル コードにエラーがありましたが、以下のクリスチャンの回答を理解するために役立つ可能性があるため、そのままにしておきます。
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 のバインドなし
誰かが私が間違っていることと私が忘れたことを教えてくれますか?
android - ProguardとDaggerを使用したリリースビルドでAndroidアプリがクラッシュする
私はAndroidアプリでProguardとDaggerを使用するのは初めてなので、誰かが私にいくつかの指針を教えてくれれば本当にありがたいです。
ProguardとDaggerがアプリケーションに実装されました。アプリがデバッグモードでインストールされている場合(つまり、Eclipseからプッシュされている場合)、アプリの実行に問題はありません。ただし、アプリのリリースビルドを実行すると、次のトレースでクラッシュします。
私は、https ://plus.google.com/108620120050432268974/posts/AAjvwg3Hmggからの提案に従い、proguard-project.txtに以下を実装しました。
しかし、それは問題を解決していないようです。提案?前もって感謝します。
android - Dagger と Robolectric を使用してサービスを注入する
TelephonyManager
Daggerでサービスを注入しようとしています。私はこのサンプルに従っています。クラスを拡張してグラフを作成し、含まれる場所Application
を定義しました。将来、他のモジュールが含まれる予定です。ApplicationModule
ServiceModule
編集:
Activity
これで、システム サービスが問題なくに注入されました。の中に行方不明でしFinderApplication.inject(this)
たActivity
。インジェクションがありますが、 でのテストではまだインジェクションしませんRobolectric
。この投稿の最後にテスト ケースを追加しました。
Edit-2:
ApplicationModule
削除および作成BaseActivity
:
オンonCreate
メソッド。私が得ているエラーは次のとおりです。
原因: java.lang.NoSuchMethodException: ServiceModule.()
しかし、空のコンストラクターを定義すると、注入されたクラスが必要なときに null ポインターが返されます。
FinderApplication.java
ServiceModule.java
SimCardActivityTest.java
java - ロボレクトリックとダガーのテスト
Robolectric (1.2) と Dagger を使用してアプリをテストしようとしています。
私のテスト モジュールは非常に単純です。
含まれている ServiceModule には XmlServiceModule が含まれています。
XmlPullParserFactory.newInstance()がヒットするまで、すべて問題ありません。Eclipse 内でデバッグできます。その時点で、私は恐ろしいものを受け取ります:
私はRobolectricとDaggerに比較的慣れていません。実装で何か間違ったことをしているのかもしれませんが、構成では考えていません。すべてが正常であることを確認するには、何を確認すればよいですか? このコードに明らかな間違いがありますか?