Dagger - class has no injectable members

匿名 (未验证) 提交于 2019-12-03 08:41:19

问题:

I'm trying to integrate Dagger into my application. And I ran into a problem. I'm getting this error at runtime:

java.lang.IllegalStateException: Errors creating object graph:     com.app.NavigationController has no injectable members. Do you want to add an injectable constructor? required by class com.app.fragments.LoginFragment

I tried looking into other, similar answers, but nothing helped me so far...

Everything related to graph construction is implemented pretty much like in Android Activity Graphs example.

I have two modules ActivityModule and ApplicationModule.

@Module(         includes = ApplicationModule.class,         injects = {                 MainActivity.class,                 LoginFragment.class         } ) public class ActivityModule {      private BaseActivity activity;      public ActivityModule(BaseActivity activity) {         this.activity = activity;     }      @Provides     @Singleton     NavigationController provideNavigation() {         return new NavigationController(activity);     } }

And another

@Module(     injects = {             MainActivity.class,             LoginFragment.class},     complete = false ) public class ApplicationModule {      private Context context;      public ApplicationModule(Context context) {         this.context = context;     }      @Provides     @Singleton     ApiService provideApiService() {         ....         return restAdapter.create(ApiService.class);     } }

What am I doing wrong?

UPDATE:
Adding more details:

Fragment:

public class LoginFragment extends BaseFragment {      //...      @Inject     NavigationController navigation;      //...

Navigation controller:

public class NavigationController {  //...  public NavigationController(BaseActivity activity) {     this.activity = activity; }  //... }

回答1:

Question was answered in this Dagger GitHub issue #372



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!