DataDinding 和 Dagger2 出错

Error with DataDinding and Dagger2

我正在开发一个使用 DataBinding 的项目,但是在添加 Dagger2 并实现模块、组件和嫁接之后,我遇到了这个错误:

Error:(8, 74) error: package com.anda.soft.app.databinding does not
exist
Error:(16, 13) error: cannot find symbol class ActivityMainBinding
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. java.lang.IllegalArgumentException: not a valid component method: injectPresentationFragmentPresenter()

这是我的模块:

@Module
public class Modul {

    private Context context;


    public Modul(Context context){
        this.context = context;
    }

    @Provides
    public MainActivity provideMainActivity(){
        return new MainActivity();
    }

    @Provides
    public PresentationFragmentPresenter providePresentationFragment(){
        return new PresentationFragmentPresenterImp(provideMainActivity());
    }

}

我的评论:

@Component (modules = Modul.class )

public interface Compoment {
 void injectPresentationFragmentPresenter();
}

和图表

public class App extends Application {

    private Compoment mCompoment;

    @Override
    public void onCreate() {
        super.onCreate();

        setUpGraph();
    }

    private void setUpGraph() {
        mCompoment = DaggerCompoment.builder()
                .modul(new Modul(this))
                .build();
    }


    public Compoment getCompoment(){
        return mCompoment;
    }
}

最后是我的 MainActivity

    private ActivityMainBinding mActivityMainBinding ;
    @Inject PresentationFragmentPresenter mView;
    private Toolbar mToolbar;


    @Override
    protected void bindView(int layoutResource) {
        mView = new PresentationFragmentPresenterImp(this);
        mActivityMainBinding = DataBindingUtil.setContentView(this,layoutResource);
    }

    @Override
    public int getLayoutResource() {
        return R.layout.activity_main;
    }

我做错了什么?你知道 Dagger 和 DataBinding 之间是否存在不兼容问题吗?

一个组件有两种提供依赖的方式:

提供方法 return 注入或提供的类型。

这是提供方法的示例。请注意,这是一个简单的 return 依赖项的方法,在本例中是 OKHttpClient.

OkHttpClient httpClient();

成员注入方法 将依赖项注入特定类型。

这是成员注入方法的示例。请注意,它采用单个参数,即将与其依赖项一起注入的类型(在本例中为 MainActivity:

void inject(MainActivity activity);

您可以在 Dagger 2 @Component javadocs 上阅读有关组件的更多信息。

你的问题是 void injectPresentationFragmentPresenter(); 两者都不是。它没有 return 任何东西,因此它不是一种供应方法。它也没有参数,所以它不能是成员注入方法。根据方法的命名和 post 的其余部分,我猜你想要的是像这样定义方法:

void injectPresentationFragmentPresenter(PresentationFragmentPresenter presenter);