[英]Android Dagger2 2.11 unscoped Appcomponent reference scoped bindings
I use dagger2 demo by https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe . 我通过https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe使用dagger2演示。 I have added SharedPreferences to my AppModule.java 我已将SharedPreferences添加到我的AppModule.java中
@Module(subcomponents = {
MainActivityComponent.class,
DetailActivityComponent.class,
Detail2ActivityComponent.class})
public class AppModule {
@Provides
@Singleton
Context provideContext(Application application) {
return application;
}
@Provides
@Singleton //if i remove dagger works right
SharedPreferences providesSharedPreferences(Application application) {
return PreferenceManager.getDefaultSharedPreferences(application);
}
}
I inject SharedPreferences in MainActivity. 我在MainActivity中注入了SharedPreferences。 After rebuild project i get error 重建项目后,我得到错误
If i remove annotation @Singleton by providesSharedPreferences, project rebuild right. 如果我通过providersSharedPreferences删除注释@Singleton,则项目重建权。 Why is problem @Singleton annotation by providesSharedPreferences ? 为什么providersSharedPreferences会出现问题@Singleton注释?
You need to add @Singleton to the AppComponent class: 您需要将@Singleton添加到AppComponent类中:
@Singleton // <---- Add this line
@Component(modules = {
AndroidInjectionModule.class,
AppModule.class,
ActivityBuilder.class})
public interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance Builder application(Application application);
AppComponent build();
}
void inject(AndroidSampleApp app);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.