Ich habe eine gist erstellt, die das Problem hervorhebt, in das ich hineinlaufe. Ich verwende ein Anwendungsmodul, um eine Firebase
Abhängigkeit für mich zur Verfügung zu stellen, anderswo zu injizieren.Nullreferenz auf Dolch 2 @Inject
Wenn ich versuche, @Inject Firebase mFirebase
in der Datenschicht, die Abhängigkeit nie erfüllt ist.
Ich versuche, die Context
aus meinen anderen Schichten zu halten, aber der Firebase
Dienst hängt davon ab. Ich bin daran interessiert, andere Muster zu lernen, um zu helfen, Android
Klassen aus meiner Geschäftslogik herauszuhalten.
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;
}
Das Beispiel vollständige Code ist auf github
Links zum Code zu haben ist nicht genug, da Links dazu neigen, zu verrotten (außerdem müssen wir auf eine andere Seite gehen und lesen). Bitte fügen Sie Ihrer Frage den Mindestcode hinzu. –