我想問一下MVP和匕首的工作方式。所以,在android開發中,我們知道Activity和fragment是一個視圖,我們通過實現觀察者(在我的情況下,即使用rxjava +改進)來製作演示者。在這種情況下,我用匕首注入Rest服務(Network Component - > retrofit)。Dagger2:將Api模塊注入演示者(MVP)
我仍然混淆爲我的演示者注入Rest服務,因爲我發現的所有示例都是注入活動。
這是我的代碼。
由於視圖:
public class PageFragment extends Fragment implements ScheduleViewInterface{
private ScheduleCursorAdapter scheduleAdapter;
@Inject RestApi restApiInject;
private SchedulePresenter mPresenterJson;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
App.getApiComponent(getActivity()).inject(this);
mPresenterJson.fetchSchedule();
}
@Override
public Observable<ScheduleList> getSchedule() {
return restApiInject.getScheduleListByUrl("url here");
}
隨着主持人:
public class SchedulePresenter implements Observer<ScheduleList> {
private ScheduleViewInterface mInterface;
public SchedulePresenter(ScheduleViewInterface viewInterface){
mInterface = viewInterface;
}
@Override
public void onCompleted() {
mInterface.jsonCompleted();
}
@Override
public void onError(Throwable e) {
mInterface.jsonError(e.getMessage());
}
@Override
public void onNext(ScheduleList scheduleList) {
mInterface.jsonScheduleList(scheduleList);
}
public void fetchSchedules(){
unSubscribeAll();
subscribe(mInterface.getSchedule(), SchedulePresenter.this);
}
,這是我dagger2代碼
@CustomScope
@Component(modules = ApiModule.class, dependencies = NetworkComponent.class)
public interface ApiComponent {
MainActivity inject(MainActivity activity);
PageFragment inject(PageFragment fragment);
}
下面是一個示例。 https://github.com/anupcowkur/MVPSample。 – Raghunandan
我很確定你的問題的答案在於[David Medenjak](http://stackoverflow.com/questions/35605408/dagger-2-injection-in-non-activity-java-class) –