将 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 界面。


至于您的问题,即那里是否是构建您的组件的正确位置:我们无法真正回答。这在很大程度上取决于您的代码架构。

Here's a nice example of MVP + dagger2 architecture. 也许试试看。