Я хотел бы спросить о том, как работает MVP и кинжал. Таким образом, в разработке Android мы знаем, что Activity и фрагмент - это представление, и мы делаем презентатора, реализуя наблюдателя (в моем случае im использует rxjava + retrofit). И кинжал в этом случае я использую для добавления службы Rest (Network Component -> retrofit).Dagger2: введите Api Module в презентатор (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
Я уверен, что ответ на ваш вопрос лежит на [ответе Дэвида Меденяка] (http://stackoverflow.com/questions/35605408/dagger-2-injection-in-non-activity-java-class) –