Я создал gist, выделив проблему, с которой я сталкиваюсь. Я использую модуль приложения, чтобы обеспечить зависимость от меня Firebase
для ввода в другое место.Нулевая ссылка на кинжал 2 @Inject
Когда я пытаюсь использовать @Inject Firebase mFirebase
в слое данных, эта зависимость никогда не выполняется.
Я пытаюсь сохранить Context
из других моих слоев, но сервис Firebase
зависит от этого. Я заинтересован в изучении любых других шаблонов, которые помогут сохранить классы Android
из моей бизнес-логики.
FirebaseService.java
public class FirebaseService {
@Inject Firebase mFirebaseRef; //NEVER GET'S INJECTED!
@Override
public LoginResult signinWithEmail(final String email, final String password) {
mFirebaseRef.dostuff(); //THIS REFERENCE DOESN'T GET INJECTED!
}
}
ApplicationModule
@Provides
@Singleton
Firebase provideFirebase(@ApplicationContext Context context) {
Firebase.setAndroidContext(context);
return new Firebase(Util.FIREBASE_URL);
}
ApplicationComponent
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
@ApplicationContext Context context();
Application application();
Firebase firebase();
}
MyActivity
public class MyActivity extends AppCompatActivity {
private ActivityComponent mActivityComponent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public ActivityComponent getActivityComponent() {
if (mActivityComponent == null) {
mActivityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(MyApplication.get(this).getComponent())
.build();
}
return mActivityComponent;
}
Полный пример кода на github
Недостаточно ссылок на код, поскольку ссылки имеют тенденцию к гниению (плюс это требует от нас выхода на другой сайт и чтения). Пожалуйста, добавьте минимальный код в свой вопрос. –