我有一个简单的Dagger 2测试设置,基于http://konmik.github.io/snorkeling-with-dagger-2.html.它注入一个PreferenceLogger,输出所有的首选项.在注入的类中,我可以@Inject更多的类.
public class MainActivity extends Activity {
@Inject PreferencesLogger logger;
@Inject MainPresenter presenter;
@Override protected void onCreate(Bundle savedInstanceState) {
MyApplication.getComponent().inject(this);
presenter.doStuff();
logger.log(this);
}
}
public class PreferencesLogger {
@Inject OkHttpClient client;
@Inject public PreferencesLogger() {}
public void log(Contect context) {
// this.client is available
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,设置了记录器,并在PreferencesLogger.log中正确设置了OkHttpClient.所以这个例子按预期工作.现在我正试图建立一个MVP结构.有一个实现的MainPresenter接口.在MainActivity中我设置了一个:
@Inject MainPresenter presenter;
Run Code Online (Sandbox Code Playgroud)
所以我可以用另一个(调试或测试)实现来切换这个MainPresenter.当然,现在我需要一个模块来指定我想要使用的实现.
public interface MainPresenter {
void doStuff();
}
public class MainPresenterImpl implements MainPresenter {
@Inject OkHttpClient client;
public MainPresenterImpl() {}
@Override public void doStuff() {
// this.client …Run Code Online (Sandbox Code Playgroud)