我正在尝试使用Dagger 2将DataSource
类注入Presenter
,但dataSource为空。
代码如下:
public class MainPresenter implements MainMVP.Presenter {
public static final String TAG = "MAIN-PRESENTER";
@NonNull
private MainMVP.View mainView;
@Inject
DataSource dataSource;
public MainPresenter(@NonNull MainMVP.View mainView) {
this.mainView = mainView;
Log.i(TAG, "MainPresenter init");
DaggerDataComponent.builder()
.dataModule(new DataModule())
.build();
}
@Override
public void onButtonClick() {
if (dataSource != null) {
mainView.showData(dataSource.getReleaseString());
}
}
}
如果我删除了在dataSource中检查null的条件,我得到NullPointerException
。任何人都可以帮忙吗?构造函数不是构建DataComponent
的正确位置吗?
答案 0 :(得分:1)
您正在构建组件,但您似乎并没有真正使用它。
DataCompontent component = DaggerDataComponent.builder()
.dataModule(new DataModule())
.build();
component.inject(this);
并添加
void inject(MainPresenter presenter);
到您的DataComponent
界面。
关于你是否是构建组件的正确位置的问题:我们无法真正回答这个问题。这很大程度上取决于您的代码架构。
Here's a nice example of MVP + dagger2 architecture.也许可以尝试一下。