将运行时参数传递给 Hilt 中的构造函数
Passing runtime parameter to constructor in Hilt
在Dagger中,我们可以通过component.builder传递运行时参数。但是如何在内置组件的地方实现呢?
public class ProgressData {
private int percent;
@Inject
public ProgressData(int percent) {
this.percent = percent;
}
public int getPercent() {
return percent;
}
public void setPercent(int percent) {
this.percent = percent;
}
如何在运行时设置百分比数据时在主 activity 中注入 ProgressData 对象?
我找到了答案。
首先用@AssistedInject注释构造函数。然后我们必须将百分比注释为 @Assisted.
public class ProgressData {
private int percent;
@AssistedInject
public ProgressData(@Assisted int percent) {
this.percent = percent;
}
public int getPercent() {
return percent;
}
public void setPercent(int percent) {
this.percent = percent;
}
}
然后要为百分比提供值,我们必须创建一个工厂接口,我们可以在其中传递所有因变量。我们必须用 @AssistedFactory 来注释它。 Hilt 将在内部实施它。
@AssistedFactory
public interface ProgressDataFactory{
ProgressData create(int percent);
}
然后从 Activity 或我们想要的地方我们必须注入 ProgressDataFactory 。然后我们可以调用创建函数。
@Inject ProgressDataFactory progressDataFactory;
progressData=progressDataFactory.create(10);
在Dagger中,我们可以通过component.builder传递运行时参数。但是如何在内置组件的地方实现呢?
public class ProgressData {
private int percent;
@Inject
public ProgressData(int percent) {
this.percent = percent;
}
public int getPercent() {
return percent;
}
public void setPercent(int percent) {
this.percent = percent;
}
如何在运行时设置百分比数据时在主 activity 中注入 ProgressData 对象?
我找到了答案。 首先用@AssistedInject注释构造函数。然后我们必须将百分比注释为 @Assisted.
public class ProgressData {
private int percent;
@AssistedInject
public ProgressData(@Assisted int percent) {
this.percent = percent;
}
public int getPercent() {
return percent;
}
public void setPercent(int percent) {
this.percent = percent;
}
}
然后要为百分比提供值,我们必须创建一个工厂接口,我们可以在其中传递所有因变量。我们必须用 @AssistedFactory 来注释它。 Hilt 将在内部实施它。
@AssistedFactory
public interface ProgressDataFactory{
ProgressData create(int percent);
}
然后从 Activity 或我们想要的地方我们必须注入 ProgressDataFactory 。然后我们可以调用创建函数。
@Inject ProgressDataFactory progressDataFactory;
progressData=progressDataFactory.create(10);