dagger.androidを使用して、実行時にバンドルからパラメーターを挿入するにはどうすればよいですか?

JosephRT

私は頭を包み込むように取り組んでいDagger 2ますが、適切に解決する方法がよくわからないという状況に遭遇しました。私は自分のアクティビティとフラグメントのそれぞれdagger.androidを設定するsubcomponentsために使用しています。各サブコンポーネントには、独自の依存関係を持つプレゼンターがあります。

問題は、1つのフラグメントがWebからフェッチされた情報を表示する必要があることです。そのためURL、フラグメントにを渡して、何を表示するかを指示します。しかしDagger、フラグメントのロードへの依存を解決する方法がわかりませんsubcomponent builder必要だと思いましたが、コンパイラメッセージがメソッドURLからの必要があると言っているので、それは明らかに冗長Providesです。また、の修飾子を設定しURL、フラグメント内のメソッドにアノテーションを付けました。Daggerはそれを拾うかもしれないと思ったが、私は間違っていた。誰かが私にこの状況を最もよく処理する方法についてのアイデアを与えることができますか?

アブ・ユスフ

私が間違っていない場合はurlFragmentを介して提供される依存関係を提供しようとしていますBundleその場合、パラメータとして受け取るProvidesメソッドを追加します。インスタンス上で、それは自動的に満足させます。ModuleFragmentFragmentgraph

断片:

@Inject
String url;

public static DetailFragment newInstance() {
    Bundle args = new Bundle();
    args.putString("url", "http://stackoverflow.com/");
    DetailFragment fragment = new DetailFragment();
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onAttach(Context context) {
    AndroidSupportInjection.inject(this);
    super.onAttach(context);

    printInfo();
}


public void printInfo(){
    if (url == null) {
        Log.i(TAG, "Url is null");
    }else {
        Log.i(TAG, "Url: " + url);
    } 
}

モジュール:

@Module
public class DetailFragmentModule {

    @Provides
    String provideUrl(DetailFragment detailFragment){
      Bundle bundle = detailFragment.getArguments();
      String url = bundle.getString("url");
      return url;
   }

   @Provides
   DetailFragmentView provideDetailFragmentView(DetailFragment detailFragment){
     return detailFragment;
   }
}

あなたが注入urlDetailFragmentているのでそれはprovideUrlメソッドに行き、満足しDetailFragment、そしてそれはurlから戻りBundleます。

これは私のために働いた。:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Dagger 2 を使用して実行時にフィールドを挿入するにはどうすればよいですか?

Dagger 2を使用してAndroid優先ジョブキューにオブジェクトを挿入するにはどうすればよいですか?

Dagger 2を使用してKotlinに名前付きフィールドパラメーターをどのように挿入しますか?

Dagger 2のサブグラフに名前付きコンポーネントを挿入するにはどうすればよいですか?

Dagger 2を使用してサーブレットに注入するにはどうすればよいですか?

Dagger2 androidでViewModelのコンストラクターインジェクションを使用するにはどうすればよいですか?

ViewModelを作成し、dagger 2を使用してリポジトリを挿入するにはどうすればよいですか?

Dagger 2を使用してMVPを実装しようとしています-提供されたプレゼンターでアクティビティへの参照を取得するにはどうすればよいですか?

Dagger 2修飾子の注釈をプロバイダー関数コンストラクターパラメーターに指定するにはどうすればよいですか?

Xに基づいてインスタンス化する実装をDagger 2に指示するにはどうすればよいですか?

「Daggerは要求された場合にこれらのフィールドを挿入しますが、新しいインスタンスは作成しません」とはどういう意味ですか?

Android / JavaでSDKをビルドするときに、Daggerをオプションにするにはどうすればよいですか?

Android / JavaでSDKをビルドするときに、Daggerをオプションにするにはどうすればよいですか?

dagger2を使用してモデルを作成するときに、モデルをプレゼンターに注入するにはどうすればよいですか?

Daggerでvoidメソッドを「提供」するにはどうすればよいですか?

Dagger2を使用してサービスに依存関係を注入するにはどうすればよいですか?

kotlinの「[Dagger / MissingBinding]」を修正するにはどうすればよいですか?

AndroidでKotlinを使用してDagger2モジュールのコンポーネントの依存関係を取得するにはどうすればよいですか?

Android以外のGradleJavaアプリケーションでDaggerを使用するにはどうすればよいですか?

AndroidでDagger2を使用して、アクティビティオブジェクトを簡単に挿入するにはどうすればよいですか?

Dagger 2で依存関係を注入するアクティビティに、コンポーネントのすべてのモジュールを設定しないようにするにはどうすればよいですか?

Dagger 2.10 Android Injectorを使用して@SessionScopeと@ActivityScopeに依存関係を提供するにはどうすればよいですか?

Dagger2のようなIOCコンテナを使用して抽象化を注入するにはどうすればよいですか

KotlinのDagger2:Moduleを使用せずに、デフォルトのパラメーター化されたコンストラクターを使用してクラスのインジェクションを行う方法はありますか?

Dagger 2の依存関係のグラフを作成するにはどうすればよいですか?

Dagger @subcomponentのインスタンスを1つだけ持つにはどうすればよいですか?

Dagger2とCursorLoaderを使用するにはどうすればよいですか

パラメータを使用して、ViewModelをDagger2を使用してフラグメントに挿入します

Dagger-2:スコープに応じて同じオブジェクトタイプに対して異なるインスタンス化を作成するにはどうすればよいですか?

TOP 一覧

  1. 1

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  2. 2

    ソートされた検索、ターゲット値未満の数をカウント

  3. 3

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    Ansibleで複数行のシェルスクリプトを実行する方法

  6. 6

    Reactでclsxを使用する方法

  7. 7

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  8. 8

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  9. 9

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  10. 10

    PowerShellの分割ファイルへのヘッダーの追加

  11. 11

    Chromeウェブアプリのウェブビューの高さの問題

  12. 12

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  13. 13

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  14. 14

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  15. 15

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  16. 16

    MLでのデータ前処理の背後にある直感

  17. 17

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  20. 20

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  21. 21

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

ホットタグ

アーカイブ