2017-09-25 7 views
0

나는 dagger2 데모를 https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe으로 사용합니다. SharedPreferences를 내 AppModule.java에 추가했습니다.Android Dagger2 2.11 unscoped Appcomponent 참조 범위가 지정된 바인딩

@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에 SharedPreferences를 삽입했습니다. 프로젝트를 재건 한 후 오류가 발생했습니다

enter image description here @SharingPreferences로 주석 @Singleton을 제거하면 프로젝트가 올바르게 다시 빌드됩니다. provideSharedPreferences가 @ Sington 주석에 문제가있는 이유는 무엇입니까?

답변

2

당신은 AppComponent 클래스에 @Singleton을 추가해야

@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); 

}