問題タブ [toothpick-di]

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 投票する
0 に答える
201 参照

kotlin - Kotlin kapt引数の1つのキーに対する複数の値

Toothpick ライブラリをリフレクションなしでマルチ モジュール プロジェクトに統合しようとしています。すべてのモジュールを DI に接続するために、このガイドに従います。たとえば、次の 3 つのモジュールがあります:app, :feature1, :feature2:appモジュールは と の両方に依存し:feature1ます:feature2。両方の機能モジュールからクラスを注入する必要があります。したがって、:appbuild.gradleファイルでは、次のようなものを記述する必要があります(kaptではなくannotationProccessorを使用):

ご覧のとおり、toothpick_registry_children_package_names引数には 2 つの値があります (2 つの値のリスト)。しかし、kapt プラグインを使用して 1 つのキーに複数の値を設定するにはどうすればよいでしょうか? 私はそれを次のようにしようとしました:

しかし、生成されたコードは次のようになります。

ご覧のとおり、引数には角括弧が含まれています (最初の引数は "[" で始まり、2 番目の引数は "]" で終わります)。私は何を間違っていますか?角かっこを削除しようとしましたが、両方のモジュール名が次のように連結されています。

kapt プラグインのバグですか、それとも何か間違っていますか?

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

android - Dagger コードは機能しますが、そのつまようじコードを同じように機能させるにはどうすればよいですか?

Toothpick の使用を開始しており、Dagger コードから Toothpick に移行する必要があります。

さて、私はダガーとの私のプロジェクトで次の文字列を持っています.

それは正常に動作します(何を、または誰がrepository/serviceImpelmentationをprovide-methodsに置いたのかまだ理解できないことに加えて)。さて、私はつまようじで同じことをしようとしていて、次のことをしようとしています:

それから

そして最後に

上記のすべての修飾子があります。

次の方法で Fragment クラス (Fragment Scope) にモジュールをインストールします

しかし、最終的に、ProjectsRepository が null であるという NullPointerException を取得しており、そのインスタンスのメソッドを使用できません。

どこで間違いを犯していますか?「翻訳」を手伝ってください。

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

android - フラグメントのインスタンスが複数存在する場合にビューモデルをフラグメントに注入する

Android アプリケーションに Toothpick 依存性注入フレームワークを使用していますが、バックスタックに同じフラグメントの複数のインスタンスが存在する場合、Android ビューモデルをフラグメントに注入する際に問題が発生します。各フラグメント インスタンスに独自のビューモデル インスタンスを取得させたいのですが、問題は単一のビューモデルしか作成されず、すべてのフラグメント インスタンスで共有されることです。

この問題を示すサンプル プロジェクトを作成しました。1 つのアクティビティには、Android ビューモデルを持つ 1 つのフラグメントが含まれます。このアクティビティの複数のインスタンスが作成され、アクティビティ バックスタックに配置されます。

これは私の活動です:

このレイアウトが含まれています:

メインフラグメント:

MainViewModel:

マイライブデータ:

出力:

ご覧のとおり、新しいフラグメントが作成されますが、同じビューモデルとライブデータを共有しています。フラグメントごとに新しいビューモデル/ライブデータを作成したいのですが、これらのビューモデルはビューモデル スコープに存在する必要があります。どうすればこれを達成できますか?