मैं DI के लिए डैगर 2 का उपयोग करने की कोशिश कर रहा हूं, यह गतिविधि/फ्रैगमेंट से संबंधित कक्षाओं के लिए बिल्कुल ठीक काम करता है जहां एक क्रिएट लाइफसाइक्ल इवेंट है। अब मेरे पास एक सादा जावा क्लास है जिसे मैं इंजेक्शन देना चाहता हूं। इस बारे में कोई विचार है कि इसके बारे में कैसे जाना है इसकी सराहना की जाएगी। कोड मैं इस तरह दिखता है:गैर गतिविधि में डैगर 2 इंजेक्शन जावा क्लास
BasicMoviesUsecaseComponent.java -
@PerActivity
@Component(dependencies = AppComponent.class, modules = BasicMoviesUsecasesModule.class)
public interface BasicMoviesUsecasesComponent {
void inject(PaymentsManager paymentsManager);
}
DatabaseModule.java -
@Module
public class DatabaseModule {
@Provides @Singleton
Realm provideRealmInstance(Context context) {
return Realm.getInstance(context);
}
@Provides @Singleton
DatabaseProvider provideDatabaseInstance(Realm realm) {
return new DatabaseProvider(realm);
}
@Provides @Singleton
SharedPreferences provideSharedPrefs(Context context) {
return context.getSharedPreferences(context.getPackageName()+"_prefs", Context.MODE_PRIVATE);
}
@Provides @Singleton
SharedPreferencesManager provideSharedPreferencesManager(SharedPreferences sharedPreferences) {
return new SharedPreferencesManager(sharedPreferences);
}
@Provides @Singleton
PaymentsManager providePaymentsManager(SharedPreferencesManager sharedPreferencesManager) {
return new PaymentsManager(sharedPreferencesManager);
}
}
AppComponent.java -
@Singleton
@Component(modules = {
ApplicationModule.class,
DomainModule.class,
DatabaseModule.class
})
public interface AppComponent {
Bus bus();
Realm realm();
DatabaseProvider dbProvider();
SharedPreferencesManager sharedPreferencesManager();
}
यहाँ है वर्ग मैं SharePreferences प्रबंधक को इंजेक्ट करने की आवश्यकता है और मैं ऐसा करने में असमर्थ हूं:
MyManager.java -
private class MyManager {
private SharedPreferencesManager manager;
@Inject
MyManager(SharedPreferencesManager manager){
this.manager = manager;
}
private void initializeDependencyInjector() {
BMSApplication app = BMSApplication.getInstance();
DaggerBasicMoviesUsecasesComponent.builder()
.appComponent(app.getAppComponent())
.basicMoviesUsecasesModule(new BasicMoviesUsecasesModule())
.build().inject(PaymentsManager.this);
}
}
मैं कैसे initializeDependencyInjector (कहते हैं)?
बहुत बहुत शुक्रिया, एक आकर्षण की तरह काम किया! –
मदद के लिए धन्यवाद। यह वास्तव में मदद करता है। –
इस निर्भरता को 'साझाकरण प्रबंधक प्रबंधक प्रबंधक' कैसे पूरा किया जाएगा? –