2016-11-10 4 views
0

Ich war ein Projekt mit Databinding Entwicklung aber nach Dagger2 aufzuwerten und die Module, Komponenten und Graft implementieren ich diesen Fehler konfrontiert:Fehler bei DataDinding und 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()

Das ist mein Modul:

@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()); 
    } 

} 

Mein Compoment:

@Component (modules = Modul.class) 

public interface Compoment { 
void injectPresentationFragmentPresenter(); 
} 

und Graph

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; 
    } 
} 

Schließlich mein 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; 
    } 

Was mache ich falsch? Weißt du, ob es Inkompatibilitäten zwischen Dolch und DataBinding gibt?

Antwort

2

Eine Komponente hat zwei Möglichkeiten der Bereitstellung von dependendencies:

Bereitstellung Methoden die eine injizierte oder bereitgestellt Typs zurückgeben .

Hier ist ein Beispiel für eine Bereitstellungsmethode. Beachten Sie, dass es sich um eine Methode handelt, die einfach eine Abhängigkeit zurückgibt, in diesem Fall eine OKHttpClient.

OkHttpClient httpClient(); 

Mitglieder-Injektionsverfahren, die Abhängigkeiten in einen bestimmten Typ injizieren.

Hier ist ein Beispiel für eine Injektionsmethode für Mitglieder. Beachten Sie, dass sie ein einziges Argument, das der Typ ist, der mit seinen Abhängigkeiten injiziert wird (in diesem Fall ein MainActivity:

void inject(MainActivity activity); 

Sie können an der Dagger 2 @Component javadocs mehr über Komponenten lesen

Ihr Problem ist. Das ist void injectPresentationFragmentPresenter(); ist keiner von diesen. Es gibt nichts zurück, also ist es keine Provisionsmethode. Es nimmt auch kein Argument, also kann es nicht eine Methode sein, die Mitglieder zu injizieren. Basierend auf der Benennung der Methode und der Rest Ihrer Post, ich rate, was Sie wollen, ist die Methode so zu definieren:

void injectPresentationFragmentPresenter(PresentationFragmentPresenter presenter); 
Verwandte Themen