web-dev-qa-db-ja.com

Dagger 2:ユーザーが入力したパラメーターをオブジェクトに注入する

オブジェクトがあるクラスtilがあるとしましょう-クラスValidatorのインスタンスです。

Util内でValidatorクラスをインスタンス化したくないので、コンストラクタを介してそれを渡します。

public class Util {

   @Inject
   public Util(Validator validator) {

   }


}

Validatorインスタンスを提供するモジュールがあります。

@Provides
@Singleton
Validator provideValidator() {
    return Validator.getInstance();
}

utilクラスのインスタンス:

@Provides
Util provideUtil(Validator validator) {
    return new Util(validator);
}

Utilのインスタンスを提供するコンポーネントが配線されています。

Util getUtil()

だから私の活動の中で、私はそれを次のように呼び出すことができます:

Util myUtil = getComponent.getUtil();

これらはすべて正常に機能します。インスタンス化されると、myUtilにはValidatorクラスの適切なインスタンスがあります。

次に、addressという名前の文字列変数を渡します(UIを介したユーザー入力です)。 Validatorのインスタンスとユーザーが入力した文字列の両方を渡すように、コンストラクターを変更したいと思います。

@Inject
public Util(Validator validator, String address) {

}

その2番目のパラメーターを渡す方法を理解することができません。誰か教えてくれますか?

理想的には、次のようにUtilをインスタンス化したいと思います。

Util myUtil = getComponent.getUtil(txtAddress.getText());
51
Jay Sidri
@Inject
Usermodel uuser;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    userComponent dc = DaggeruserComponent.create();
    dc.injectMain(this);

    historymodel hm =  uuser.getHistorymodel();// get the models to pass user inputs 

    videoModel vm = uuser.getVideoModel();//  get the models to pass user inputs

    hm.setUid("userid ");


}

}

1
Koushik Deb