因此,我们在应用程序中使用 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/