相关疑难解决方法(0)

Dagger 2:将用户输入的参数注入对象

假设我有一个类Util,它接受一个对象 - 类Validator的一个实例.

因为我想避免在Util中实例化Validator类,所以我通过构造函数传递它:

public class Util {

   @Inject
   public Util(Validator validator) {

   }


}
Run Code Online (Sandbox Code Playgroud)

我有一个提供Validator实例的模块:

@Provides
@Singleton
Validator provideValidator() {
    return Validator.getInstance();
}
Run Code Online (Sandbox Code Playgroud)

和Util类的一个实例:

@Provides
Util provideUtil(Validator validator) {
    return new Util(validator);
}
Run Code Online (Sandbox Code Playgroud)

我有一个组件连线,它会给我一个Util的实例:

Util getUtil()
Run Code Online (Sandbox Code Playgroud)

所以在我的活动中,我可以称之为:

Util myUtil = getComponent.getUtil();
Run Code Online (Sandbox Code Playgroud)

所有这些都可以正常工作 - myUtil在实例化时有一个适当的Validator类实例.

现在我想传入一个名为address的String变量(通过UI输入用户).我想更改构造函数,所以我传入Validator的实例和用户输入的String:

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

}
Run Code Online (Sandbox Code Playgroud)

我无法理解如何传递第二个参数.谁能告诉我怎么样?

理想情况下,我想实例化Util,如:

Util myUtil = getComponent.getUtil(txtAddress.getText());
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

46
推荐指数
2
解决办法
2万
查看次数

在Android上使用DI的具体好处是什么?

使用Android依赖注入框架的具体优势或优势是什么,如Dagger,TransfuseRoboGuice

例如,什么样的应用程序从使用DI中受益最多?是否有更多的性能优势,或者更多的是扩展应用程序的简易性,还是更多关于使其可测试?

问这个问题的原因之一是衡量我正在开发的应用程序是否真的会从中受益或不多.由于我打算在某些方面认真对待应用程序,可测试性和易于扩展性将是很好的,即使第一版本使用成本高(更多时间设置,学习曲线等).

谢谢!

android dependency-injection roboguice dagger transfuse

21
推荐指数
1
解决办法
7080
查看次数