3
我正在測試Dagger的新功能:Android模塊。而且我不能夠當我使用@ContributesAndroidInjector
我總是收到以下錯誤編譯代碼:Dagger @ContributesAndroidInjector ComponentProcessor無法處理此接口
錯誤:(12,8)錯誤:dagger.internal.codegen.ComponentProcessor無法處理該接口,因爲不是所有的的依賴關係可以得到解決。用生成的代碼檢查編譯錯誤或循環依賴。
我試圖執行我的組件,如here,但仍然出現錯誤。
這裏是最小的例子:
@PerApplication
@Component(modules = {AndroidInjectionModule.class, LoginBindingModule.class})
public interface ApplicationComponent {
void inject(ExampleApplication application);
}
@Module
public abstract class LoginBindingModule {
@ContributesAndroidInjector
abstract LoginActivity contributeYourActivityInjector();
}
public class LoginActivity extends Activity {
@Inject
LoginPresenter loginPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState);
}
}
public class LoginPresenter {
@Inject
public LoginPresenter() {
}
}
如果我從ApplicationComponent刪除LoginBindingModule應用程序將建立,但會失敗,運行時異常:
java.lang.IllegalArgumentException異常:沒有工廠噴油器綁定對於類
項目設置:
gradle 3.3
buildToolsVersion "25.0.2"
dagger 2.11
請看看這個例子: https://material.uplabs.com/posts/daggerandroidinjector 我有同樣的問題,因爲你,但我錯過了 annotationProcessor「com.google.dagger:dagger- android-processor:2.11「 」在gradle文件中。 – exkoria
您沒有在代碼示例中提供'ExampleApplication'。如果你想使用'AndroidInjection.inject(Activity)',你必須讓你的應用程序實現'HasActivityInjector'。我試過你的代碼,它似乎工作正常。如果您繼續看到錯誤,那麼它不是來自您發佈的代碼。如果您需要更多幫助,請將整個項目發佈到某處。另外,你有沒有嘗試清理/重建你的項目。 –