gpt4 book ai didi

java - Android - Dagger 注入(inject)非 Activity 或 fragment

转载 作者:行者123 更新时间:2023-12-01 18:03:32 24 4
gpt4 key购买 nike

因此,我们在应用程序中使用 dagger 2,但现在我想注入(inject)一个不是 Activity 或 fragment 的类。我怎样才能做到这一点。所以我想注入(inject)以下类:

public class Analytics {

private final PageMap pagesByActivity;
private final HitFactory hitFactory;
private final Provider<String> storeIdProvider;
private final Provider<StockChecker> stockCheckerProvider;
public Analytics(PageMap pagesByActivity, HitFactory hitFactory,
Provider<String> storeIdProvider,
Provider<Checker> checkerProvider,
String suiteIds) {

this.pagesByActivity = pagesByActivity;
this.hitFactory = hitFactory;
this.storeIdProvider = storeIdProvider;
this.checkerProvider = checkerProvider;
}
}

这门课的工作是进行分析。我想感染一个名为 deviceInfo 的类,我已经有一个提供方法。

如果我现在尝试注入(inject),它会编译并运行,但随后崩溃,给我一个空对象

最佳答案

将 deviceInfo 作为构造函数参数添加到 Analytics 类。然后在您的 Dagger 模块 provides 方法中,在参数中包含 deviceInfo。这意味着您需要让 Dagger 为您创建 Analytics 对象。 Dagger 将首先创建 DeviceInfo 对象,然后再创建 Analytics 对象。模块中的代码应类似于以下内容:

@Provides
DeviceInfo provideDeviceInfo(){
return new DeviceInfo();
}

@Provides
Analytics provideAnalytics(DeviceInfo deviceInfo){
return new Analytics(deviceInfo, [... other parameters]);
}

关于java - Android - Dagger 注入(inject)非 Activity 或 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773577/

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