匕首 - 类有没有注射成员 [英] Dagger - class has no injectable members
问题描述
我想匕首融入我的应用程序。我遇到了一个问题。我在运行时得到这个错误:
java.lang.IllegalStateException:错误创建对象图:
com.app.NavigationController没有注射成员。你想添加一个注射构造?按类com.app.fragments.LoginFragment要求
我试图寻找到其他类似的答案,但没有任何帮助我至今...
要绘制建筑相关的一切都实现pretty很像 Android的活动图例子。
我有两个模块 ActivityModule
和 ApplicationModule
。
@Module(
包括= ApplicationModule.class,
注射= {
MainActivity.class,
LoginFragment.class
}
)
公共类ActivityModule { 私人BaseActivity活动; 公共ActivityModule(BaseActivity活动){
this.activity =活动;
} @Provides
@辛格尔顿
NavigationController provideNavigation(){
返回新NavigationController(活动);
}
}
和其他
@Module(
注射= {
MainActivity.class,
LoginFragment.class},
完整= FALSE
)
公共类ApplicationModule { 私人上下文的背景下; 公共ApplicationModule(上下文的背景下){
this.context =背景;
} @Provides
@辛格尔顿
ApiService provideApiService(){
....
返回restAdapter.create(ApiService.class);
}
}
我在做什么错了?
更新:结果
添加更多细节:
片段:
公共类LoginFragment扩展BaseFragment { // ... @注入
NavigationController导航; // ...
导航控制器:
公共类NavigationController {// ...公共NavigationController(BaseActivity活动){
this.activity =活动;
}// ...
}
问题是回答了这把匕首 GitHub的问题#372
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;
}
//...
}
Question was answered in this Dagger GitHub issue #372
这篇关于匕首 - 类有没有注射成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!