Tôi có thiết lập thử nghiệm Dagger 2 đơn giản, dựa trên http://konmik.github.io/snorkeling-with-dagger-2.html. Nó tiêm một PreferenceLogger mà kết quả đầu ra tất cả các sở thích. Trong lớp được tiêm, tôi có thể @Inject thêm các lớp.Dagger 2 và triển khai giao diện
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
}
}
Khi tôi chạy điều này, bộ ghi nhật ký được đặt và bên trong PreferencesLogger.log OkHttpClient được đặt chính xác. Vì vậy, ví dụ này hoạt động như mong đợi. Bây giờ tôi đang cố gắng để có được một cấu trúc MVP tại chỗ. Có giao diện MainPresenter với triển khai. Trong MainActivity tôi đặt một:
@Inject MainPresenter presenter;
vì vậy tôi có thể chuyển đổi MainPresenter này bằng cách thực hiện thay thế (gỡ lỗi hoặc kiểm tra). Ofcourse, bây giờ tôi cần một Module để xác định những gì thực hiện tôi muốn sử dụng.
public interface MainPresenter {
void doStuff();
}
public class MainPresenterImpl implements MainPresenter {
@Inject OkHttpClient client;
public MainPresenterImpl() {}
@Override public void doStuff() {
// this.client is not available
}
}
@Module public class MainActivityModule {
@Provides MainPresenter provideMainPresenter() {
return new MainPresenterImpl();
}
}
Hiện tại, OkHttpClient không được tiêm thêm nữa. Ofcourse tôi có thể thay đổi các mô-đun để chấp nhận một tham số OkHttpClient, nhưng tôi không nghĩ rằng đây là cách đề nghị để làm điều đó. Có một lý do tại sao MainPresenterImpl không bơm đúng cách?
Tôi hỏi một câu hỏi liên quan ở đây: http://stackoverflow.com/questions/30555285/dagger2-injecting-implementation-classes-with-component – EpicPandaForce
hãy xem bài viết và mẫu dự án này mà có thể giúp: https://medium.com/@m_mirhoseini/yet-another-mvp-article-part-1-lets-get-to-know-the-project-d3fd553b3e21#.6y9ze7e55 –