目前我不是依赖注入的粉丝,但我想尝试一下。
这就是我所拥有的:
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();
}
}
现在我想注入Facebook的CallbackManager。好的,让我们开始。
我创建了很多新课......真的吗?我必须编写更多代码才能让我的开发人员生活更轻松? : - (
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();
}
使用这个新类我将Activity更改为:
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
始终为空。
这有什么问题?
答案 0 :(得分:2)
像这样编辑你的FacebookComponent:
import com.facebook.CallbackManager;
import javax.inject.Singleton;
import dagger.Component;
@Singleton
@Component(modules = {FacebookModule.class})
public interface FacebookComponent {
public void inject(ActivityMain2 activity);
}
然后是你的initializeDependencyInjector方法:
private void initializeDependencyInjector() {
DaggerFacebookComponent.builder()
.facebookModule(new FacebookModule())
.build().inject(this);
}