小编R. *_*ang的帖子

Dagger 2和接口实现

我有一个简单的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)

java mvp android dependency-injection dagger-2

7
推荐指数
2
解决办法
7943
查看次数

标签 统计

android ×1

dagger-2 ×1

dependency-injection ×1

java ×1

mvp ×1