問題タブ [dagger-2]
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 - シングルトンを注入する方法は?
Dagger2 に慣れるために簡単なサンプルを作成していましたが、ある時点で行き詰まりました。シングルトンにしたいクラスがありますが、Dagger2 は私にさまざまなオブジェクトを与え続けます。
ここに私のソースコードがあります:
シングルトンクラス
SingletonComponent
シングルトンモジュール
主要
しかし、さまざまなオブジェクトが stdout に記録されています。理由はありますか?
java - Libgdx と Dagger 2 - コードを生成しない
Graddle 2 による依存性注入をサポートするために、libgdx ゲームの移植に取り組んでいます。
私が直面している問題は、dagger がコンポーネントのコードを生成していないように見えることです。問題は、libgdx が gradle ファイルを処理する方法と、異なるオペレーティング システムでそれらを分割する方法にあると思います。
私の(非常に不完全な)プロジェクト全体はここにありますが、Androidのみを対象としたプロジェクトのコードを投稿します。
プロジェクト全体の私のbuild.gradle:
Androidモジュールの私のbuild.gradle:
コア モジュールの私の build.gradle:
私のモジュールクラス AssetLoaderModule.java:
私のコンポーネント AssetLoaderComponent.java
最後に、AssetLoader オブジェクトを作成しようとするインスタンス:
問題は、DaggerAssetLoaderComponent.create()
コンパイラがシンボルを認識しないため、コードが生成されている行で発生します。
私が試したこと:
- プロジェクトのクリーニング/ビルド/アセンブル
- 依存関係/プラグインを Android モジュール自体に追加する
- プロジェクトファイルをチェックして、コードが存在するかどうかを確認しますが、隠れているだけです(存在しません)
- libgdx 以外のプロジェクトでダガーをセットアップし、問題なく動作するようにしました
- Glassfish アノテーションと jrs250 アノテーションの両方を使用してみました
- セットアップファイルを使用してAndroidのみのプロジェクトを生成することにより、プロジェクトをAndroidのみに制限しようとしました。(ただし、github リンクには、Android オペレーティング システム以外のコードも含まれています)
この時点で、さまざまなファイルをさまざまな build.gradle ファイルに追加する方法について、ばかげていると考えています。さらに情報が必要な場合は、以下にコメントしてください。
dependency-injection - Dagger 2.0 コンストラクター インジェクションとシングルトン
Dagger 2.0 コンストラクター インジェクションとシングルトンを同時に使用することは可能ですか。ドキュメントに答えが見つかりません。
例:
コンストラクター注入は確実に機能します。しかし、クラスに @Singleton を記述した場合、MyClass がシングルトンとして作成されることが保証されますか?
ありがとうございました
android - multidex と Dagger 2 を使用すると、Application オブジェクトに関数が表示されない
最近、特に gradle multidex プラグイン ('com.android.support:multidex:1.0.0') を使用して Dalvik VM 用にビルドするときに、Multidexing で問題が発生しています。
メインのdexファイルに含める必要がある正しいクラスをgradleが解決するのに苦労しているようです。その結果、ビルド プロセスは正常に完了しますが、メイン アプリケーション (それ自体が MultiDexApplication を拡張する) を正しくインスタンス化するために必要なクラスが含まれていないメイン dex ファイルが生成されることがあります。
一貫性のあるビルドを強引に実行するための現在の解決策は、multidex によって生成された中間ファイルを監視することでした。適切なビルド (つまり、メイン アプリ、つまり MultiDexApplication を正しくインスタンス化したもの) ができたら、メイン dex ファイルに含まれていたクラスのリストをファイルにコピーし、それを強制的に multidex に使用させます ( --main を使用) -dex-list パラメータ)。これにより、必要なクラスをメインの dex ファイルに「強制」することが一時的に可能になりましたが、明らかに保守性が低く、新しいクラス/依存関係が追加されたときに簡単に更新できません。
依存性注入に Dagger 2 を使用していますが、これが原因で multidex プラグインがメイン アプリの依存性を正しく識別できていないのではないかと疑っています。これが原因でしょうか? また、最小限の「App Wrapper」(MultiDexApplication を拡張するもの) を multidexing の「エントリ ポイント」として使用することについてのさまざまな参照にも遭遇しましたが、続行するプロセスに関する十分なドキュメントを見つけることができませんでした。
これについての洞察を提供できれば素晴らしいと思います-これは以前に経験した問題ですか? 既知の回避策はありますか? 「App Wrapper」パターンを実装する方法について詳細を教えていただければ幸いです。
java - 複数の依存関係を持つ Dagger2 コンポーネント
これは私が現在持っているもので、動作します:
ここで、別の依存関係を追加したいと思います。私はこれを次のように変更しました:
しかし今、私はこのエラーメッセージを受け取ります:
FragmentFacebookLoginComponent は複数のスコープ コンポーネントに依存します
どうすればこれを解決できますか? 複数の依存関係を持つにはどうすればよいですか?
1 つのコンポーネントからスコープを削除すると、次のエラー メッセージが表示されます。
AnotherComponent (スコープ外) はスコープ付きコンポーネントに依存できません
java - Dagger 2 コンポーネントの依存関係
モジュールに何かを注入することは可能ですか?
私は2つの基本モジュール/コンポーネントを持っています:
このモジュール/コンポーネントを使用して、3 番目のモジュールを作成します。
しかしmHttpClient
、mGson
注射されていません。モジュールに何かを注入することは可能ですか? はいの場合、どのように?
次のようなコンポーネントを作成します。
android - Android Dagger 2 POJOフィールドInject null
今日、Dagger 2 を使い始めたばかりで、すべてを正確にセットアップする方法について少し混乱しています。
POJO を注入しようとしていますが、常に null です。まず、いくつかのコード:
App.java
AppModule.java
AppComponent.java
NetworkingManager.java
NetModule.java
NetComponent.java
SomeClass.java
多くのチュートリアル、SO の質問、および例を調べるのにかなりの時間を費やしましたが、何が間違っているのかを理解できませんでした。
セットアップに何か問題があることは 99% 確信していますが、原因を突き止めることはできませんでした。