В настоящее время я не являюсь поклонником инъекции зависимостей, но я хочу дать им попробовать.Зависимость инъекции с Dagger2 на Android
Это то, что у меня есть:
import android.os.Bundle;
import com.facebook.CallbackManager;
import rx.android.app.RxActivity;
public class ActivityMain2 extends RxActivity {
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
}
}
Теперь я хочу, чтобы ввести CallbackManager Facebook. Ладно, давай начнем.
Я создал много новых классов ... действительно? Мне нужно написать гораздо больше кода, чтобы упростить мою жизнь разработчика? :-(
import com.facebook.CallbackManager;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module
public class FacebookModule {
@Provides
@Singleton
CallbackManager provideCallbackManager() {
return CallbackManager.Factory.create();
}
}
import com.facebook.CallbackManager;
import javax.inject.Singleton;
import dagger.Component;
@Singleton
@Component(modules = {FacebookModule.class})
public interface FacebookComponent {
CallbackManager provideCallbackManager();
}
С этим новым классам я изменил активность к этому:
import android.os.Bundle;
import com.facebook.CallbackManager;
import javax.inject.Inject;
import rx.android.app.RxActivity;
public class ActivityMain2 extends RxActivity {
@Inject
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeDependencyInjector();
}
private void initializeDependencyInjector() {
DaggerFacebookComponent.builder()
.facebookModule(new FacebookModule())
.build();
}
}
Но это не работает callbackManager
всегда нулевой
Что случилось с.. это?