2016-11-10 50 views
0

我開發使用數據綁定,但之後增加Dagger2和執行模塊,組件和移植物我面臨這個錯誤的一個項目:誤差DataDinding和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之間是否存在不兼容?

回答

2

A組分具有提供dependendencies的方法有兩種:

提供方法返回注入或提供的類型。

以下是提供方法的示例。請注意,它是一種簡單返回依賴項的方法,在本例中爲OKHttpClient

OkHttpClient httpClient(); 

成員注入方法即依賴注入特定類型。

下面是一個成員注入方法的示例。請注意,它需要一個參數,它是將它的依賴注入(類型在這種情況下MainActivity

void inject(MainActivity activity); 

你可以在Dagger 2 @Component javadocs閱讀更多關於組件

你的問題。那void injectPresentationFragmentPresenter();既不是這些,也不返回任何東西,所以它不是一個提供方法,也沒有參數,所以它不能成爲成員注入方法,根據方法的命名和你的帖子的其餘部分,我猜你想要的是定義這樣的方法:

void injectPresentationFragmentPresenter(PresentationFragmentPresenter presenter);