将 dataSource class 注入演示者给出 null
Injecting dataSource class to presenter gives null
我正在尝试使用 Dagger 2 将 DataSource
class 注入 Presenter
,但数据源为空。
代码如下:
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());
}
}
}
如果我删除在数据源中检查是否为 null 的条件,我将得到 NullPointerException
。任何人都可以帮忙吗?构造函数不是构建 DataComponent
的正确位置吗?
您正在构建您的组件,但您似乎并没有实际使用它。
DataCompontent component = DaggerDataComponent.builder()
.dataModule(new DataModule())
.build();
component.inject(this);
并添加
void inject(MainPresenter presenter);
到您的 DataComponent
界面。
至于您的问题,即那里是否是构建您的组件的正确位置:我们无法真正回答。这在很大程度上取决于您的代码架构。
我正在尝试使用 Dagger 2 将 DataSource
class 注入 Presenter
,但数据源为空。
代码如下:
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());
}
}
}
如果我删除在数据源中检查是否为 null 的条件,我将得到 NullPointerException
。任何人都可以帮忙吗?构造函数不是构建 DataComponent
的正确位置吗?
您正在构建您的组件,但您似乎并没有实际使用它。
DataCompontent component = DaggerDataComponent.builder()
.dataModule(new DataModule())
.build();
component.inject(this);
并添加
void inject(MainPresenter presenter);
到您的 DataComponent
界面。
至于您的问题,即那里是否是构建您的组件的正确位置:我们无法真正回答。这在很大程度上取决于您的代码架构。