将运行时参数传递给 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);