gpt4 book ai didi

android - Dagger 2 如何执行构造函数注入(inject)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:41 25 4
gpt4 key购买 nike

我有课

public class DialogUtils
{
private Context context;

@Inject
public DialogUtils(Context context)
{
this.context = context;
}
}

在我的 Activity 类中,我已经这样做了,但是我在 dialogUtils 实例上遇到了空指针异常。

public class LoginActivity extends Activity{
@Inject DialogUtils dialogUtils;
}

我知道如何通过模块和组件注入(inject)依赖,但不确定如何使用构造注入(inject)。非常感谢任何帮助。

最佳答案

如果您不保留 Activity 级组件并且您没有使用组件依赖或子组件从 super 作用域(应用程序级组件)继承,则如下

// unscoped
public class DialogUtils {
private final Context context;

@Inject
public DialogUtils(Context context) {
this.context = context;
}
}

然后

@Module
public class ActivityModule {
private final Context context;

public ActivityModule (Context context) {
this.context = context;
}

@Provides //scope is not necessary for parameters stored within the module
public Context context() {
return context;
}
}

@Component(modules={ActivityModule.class})
@Singleton
public interface ActivityComponent {
Context context();

DialogUtils dialogUtils();

void inject(MainActivity mainActivity);
}

然后

@Inject
DialogUtils dialogUtils;

...


ActivityComponent activityComponent = DaggerMainActivityComponent.builder()
.activityModule(new ActivityModule(MainActivity.this))
.build();

activityComponent.inject(this); // activityComponent.dialogUtils() also works

关于android - Dagger 2 如何执行构造函数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com