MVPと短剣の動作方法について質問したいと思います。したがって、アンドロイドの開発では、アクティビティとフラグメントがビューであることがわかります。私はオブザーバを実装してプレゼンタを作成します(私の場合、rxjava + retrofitを使用しています)。この場合の短剣は、レストサービス(ネットワークコンポーネント→改造)を注入するために使用します。Dagger2:プレゼンターにApiモジュールを挿入する(MVP)
私が見つけたすべての例がアクティビティに注入されているので、レストサービスをプレゼンターに注入するのはまだ混乱します。
ここは私のコードです。ビューとして
:プレゼンターとして
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) –