我使用 https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe 的 dagger2 演示.我已将 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);
}
}
我在 MainActivity 中注入(inject) SharedPreferences。重建项目后我得到错误
如果我通过 providesSharedPreferences 删除注释 @Singleton,则项目重建正确。 为什么 providesSharedPreferences 会出现问题 @Singleton 注解?
最佳答案
您需要将@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);
}
关于java - Android Dagger2 2.11 unscoped Appcomponent reference scoped bindings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46413190/