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

dependency-injection - Dagger を既存のプロジェクトに追加する

Dagger を既存の Web アプリケーションに追加しようとしていますが、設計上の問題が発生しています。

現在、ハンドラーは次のようなディスパッチャーで作成されています

ログインハンドラー内で、次のような関数を呼び出すことができます

loginService をハンドラーに挿入できるようにしたいのですが、最善の方法を見つけるのに苦労しています。ディスパッチャーには非常に長いハンドラーのリストがあり、それらすべてをインスタンス変数として挿入すると、大量のコードを追加するように見えます。

この種の問題の解決策はありますか?

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

android - Dagger でジェネリック クラスを注入する

プロジェクトに抽象基本クラスがあります

次のようなジェネリック クラスを挿入しようとしています。

そのような一般的な注射で短剣を機能させる方法はありますか? Dagger は次のようなコードを生成します。

そして、「Tを型に解決できない」ため失敗します。それを生成させる方法はありますか

このような場合には?

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

android - Eclipse でビルドされた Dagger の例は、「このモジュールに対してコード生成が実行されたことを確認してください」で失敗します。

Android での依存性注入に Dagger を使用し、Eclipse を使用してビルドしています。例として使用するためにandroid-activity-graphsを複製しました。

https://github.com/square/dagger/issues/126のstaxgrに従って環境をセットアップしました。 これらは私のライブラリです: dagger-1.1.0.jardagger-compiler-1.1.0.jar、およびjavax.inject.jar

最後に、Eclipse のソース フォルダーをsrc/main/java(単に ではなくsrc/) を指すように変更して、Eclipse が package キーワードを介して関連ファイルを検出できるようにしました。

プロジェクトはビルドされますが、実行するとすぐに失敗し、次の例外が発生します。

Dagger の例を Eclipse で動作させるにはどうすればよいですか?

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

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

Dagger (v1.1.0) を使用して Android アプリケーションのアクティビティ グラフをセットアップしようとしています。正常にコンパイルされますが、以下に示すエラーが発生します (完全なトレースはこちら)。

重要なセクションを強調するために最善を尽くしますが、何か見落としがある場合に備えて、私の完全なプロジェクトはGitHubにあります。実行./gradlew clean assembleしてapkをビルドするだけです。

私のActivityModuleには、Dagger が見つけられないように見えるプロバイダ メソッドがあります。

このモジュールは、私の BaseActivity の applicationGraph (その後、activityGraph として保存されます) に確実に追加されており、BaseFragmentは自分自身をactivityGraphに注入しています。

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

android - getApplicationオーバーライドでダガープロジェクトがサイレントに失敗する

IntelliJ で実行されている Dagger の単純な例を取得しようとしていますが、DemoBaseActivity クラスの getApplication 呼び出しで失敗しています。

インジェクション メソッドにヒットすると、アプリはエラーなしでサイレントに失敗します。DemoBaseActivity の代わりに基本クラス Activity のインスタンスを使用してプロジェクトをビルドしたところ、問題なくデプロイされました。

何かご意見は?

編集:

アクティビティの getApplication() 呼び出しの戻り値がカスタム DemoApplication タイプとしてキャストされると、壊れているようです。

編集: スタック トレースは次のとおりです。

10-03 05:15:25.331: エラー/AndroidRuntime(5035): 致命的な例外: main java.lang.RuntimeException: アクティビティを開始できません ComponentInfo{com.badlogic.androidgames.simple/com.badlogic.androidgames.simple.ui. HomeActivity}: java.lang.ClassCastException: android.app.Application は android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) で com.badlogic.androidgames.simple.DemoApplication にキャストできません android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2261) で android.app.ActivityThread.access$600(ActivityThread.java:141) で android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) で android.os.Handler.dispatchMessage(Handler) .java:99) で android.os.Looper.loop(Looper.java:137) で android.app.ActivityThread.main(ActivityThread.java:5103) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit. java:737) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) で dalvik.system.NativeStart.main(Native Method) の原因: java.lang.ClassCastException: android.app.Application はできませんcom.badlogic.androidgames.simple.ui.HomeActivity.onCreate(HomeActivity.java: 30) android.app.Activity.performCreate(Activity.java:5133) で android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) で android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

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

android - dagger plus'ed モジュールに injects 属性を配置する適切な場所

plus'ed グラフがある場合、dagger で injects 属性 (アノテーションではない) を設定するのに適切な場所はどれか疑問があります。

次のシナリオがあります。

それはうまくいきました:

その後、その時点から B を提供する唯一のモジュールである新しいモジュールを追加しました。

それは失敗しています

IllegalStateException クラス ClassWithInjects で必要な B のバインディングはありません

これを行うとき:

移動すると動作します

injects = ClassWithInjects.class

BaseModule から AdditionalModule への属性。

では、plus'ed モジュールを使用する場合、injects 属性をどこに配置すればよいのでしょうか? .plus(...) の呼び出しでパラメーターとして使用されるモジュールの 1 つにある必要がありますか?

このgithubの問題によると、依存関係を注入しようとするインスタンスのバインディングを持つモジュールにインジェクトを配置する必要があります(上記の例ではClassWithInjects)が、すべてを満たすために必要な異なるバインディングを提供する複数のモジュールがある場合はどうなりますかそのインスタンスの依存関係? 他のすべてを含むモジュールを作成し、そこに injects 属性を配置する必要がありますか?

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

android - IntelliJ で短剣を構成する方法

Android での依存性注入に適したオプションと思われるため、dagger をダウンロードしました。しかし、コンパイラの統合に問題があります。適切な設定に関するヒントはありますか? このプロジェクトは似ているように見えるので、Androidアノテーションに関する指示に従いました。しかしダガーには効かない。

私がしたこと: プロジェクトの lib フォルダーに dagger-1.1.0.jar と javax.inject-1.jar を追加し、「dagger-compiler-1.1.0.jar」を含む「compile-libs」という新しいフォルダーを追加しました。 "このファイルを *.apk に圧縮したくないためです。

プロジェクトのファイル構造

モジュールの依存関係に dagger と javax.inject を追加しました。

ここでトリッキーな部分: 注釈コンパイラ設定にコンパイラを追加しました:

設定

プログラムを実行すると、次のエラーが表示されます: クラス de.myproject.app.modules.AndroidModule のモジュール アダプターを読み込めませんでした。このモジュールのコード生成が実行されたことを確認してください。

したがって、コード生成は行われなかったようです。さらに、私のプロジェクトの「生成された」フォルダーは空です。では、IntelliJ の Android プロジェクトで短剣を動作させるための正しい設定は何ですか?