Android-Dagger2-Can';无法将依赖项从应用程序组件获取到活动范围中
我使用Dagger 2进行依赖项注入,如果注入在同一范围内,那么一切都正常工作,例如:如果ApplicationComponent在应用范围内注入实例,或者ActivityComponent在活动范围内注入实例,那么一切都正常。然后,当我试图使ActivityComponent依赖于ApplicationComponent并试图从中获取依赖项时,问题就出现了。应用程序根本不构建,并且我得到了3个编译器错误 1.找不到符号类DaggerActivityComponent 2.找不到符号类DaggerApplication COM 3.无法访问Nullable。 我到处都在寻找这个,但似乎没有什么能解决问题 以下是ApplicationComponent:Android-Dagger2-Can';无法将依赖项从应用程序组件获取到活动范围中,android,dagger-2,dagger,Android,Dagger 2,Dagger,我使用Dagger 2进行依赖项注入,如果注入在同一范围内,那么一切都正常工作,例如:如果ApplicationComponent在应用范围内注入实例,或者ActivityComponent在活动范围内注入实例,那么一切都正常。然后,当我试图使ActivityComponent依赖于ApplicationComponent并试图从中获取依赖项时,问题就出现了。应用程序根本不构建,并且我得到了3个编译器错误 1.找不到符号类DaggerActivityComponent 2.找不到符号类Dagge
@ApplicationScope
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
void inject(MyApplication application);
}
@ActivityScope
@Component(modules = {ActivityModule.class}, dependencies = ApplicationComponent.class)
public interface ActivityComponent {
void inject(MainActivity activity);
}
以下是活动组件:
@ApplicationScope
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
void inject(MyApplication application);
}
@ActivityScope
@Component(modules = {ActivityModule.class}, dependencies = ApplicationComponent.class)
public interface ActivityComponent {
void inject(MainActivity activity);
}
以下是ApplicationModule:
@Module
公共类应用程序模块{
@Provides
public Retrofit retrofit(GsonConverterFactory gsonConverterFactory) {
return new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(gsonConverterFactory)
.build();
}
@Provides
public Gson gson() {
GsonBuilder gsonBuilder = new GsonBuilder();
return gsonBuilder.create();
}
@Provides
public GsonConverterFactory gsonConverterFactory(Gson gson) {
return GsonConverterFactory.create(gson);
}
}
这是ActivityModule
@Module
public class ActivityModule {
}
这是应用程序类
public class MyApplication extends Application{
ApplicationComponent component;
@Inject
Retrofit retrofit;
@Override
public void onCreate() {
super.onCreate();
component = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule())
.build();
component.inject(this);
}
public ApplicationComponent component() {
return component;
}
}
最后是活动:
public class MyApplication extends Application{
ApplicationComponent component;
@Inject
Retrofit retrofit;
@Override
public void onCreate() {
super.onCreate();
component = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule())
.build();
component.inject(this);
}
public ApplicationComponent component() {
return component;
}
}
请提供帮助,并感谢您。我也遇到了同样的问题,您需要做的只是为ApplicationComponent需要在ApplicationComponent接口中注入的依赖项添加一个getter方法 例如,如果您需要改进,比如在这里,您通常在ApplicationModule中定义@Provides方法并添加
Retrofit getRetrofit();
在ApplicationComponent中
我希望这有助于应用程序不会崩溃,因为我们没有达到这个级别,它甚至无法成功构建。您已经粘贴了两次MyApplication,但没有向我们显示MyActivity。我的直觉是您的“无法访问Nullable”问题是:如果Dagger无法编译MyActivity类,它将无法在DaggerApplicationComponent或DaggerActivityComponent上生成其实现,因此即使Dagger配置正确,您的应用程序也无法工作。如果这还不够,请发布准确的编译器错误消息和MyActivity的文本。下面是示例的一个方面我所经历的,非常感谢你