因此,我们在应用程序中使用了匕首2,但现在我想注入到不是活动或片段的类中。我怎样才能做到这一点。因此,我要插入以下课程:
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的类,该类已经有一个Provides方法。
如果我现在尝试注入,它将编译并运行,但随后崩溃,给我一个空对象
最佳答案
将deviceInfo作为构造函数参数添加到Analytics类。然后在Dagger Module provides
方法中,在参数中包含deviceInfo。这意味着您需要让Dagger为您创建Analytics对象。 Dagger将首先创建DeviceInfo对象,然后再创建Analytics对象。模块中的代码应类似于以下内容:
@Provides
DeviceInfo provideDeviceInfo(){
return new DeviceInfo();
}
@Provides
Analytics provideAnalytics(DeviceInfo deviceInfo){
return new Analytics(deviceInfo, [... other parameters]);
}