での活動への参照を取得することができ、ダガー2を使用してMVPを実装しよう - どのように私は私がMVPとダガーでアプリをセットアップしようとしています提供プレゼンター
をビューがどの実装Activity
ですビューインタフェース。
public class OverviewActivity extends AppCompatActivity implements OverviewContract.View {
@Inject OverviewPresenter presenter;
@BindView(R.id.history_days) ListView HistoryLabels;
@BindView(R.id.history_events) ListView HistoryEvents;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overview);
ButterKnife.bind(this);
DaggerOverviewComponent.create().inject(this);
}
@Override
public void showHistory(List<Exercise> history) {
// ...
}
@Override
public void updateScoreSlider(float value) {
// ...
}
@OnClick(R.id.add_event_button)
public void addEvent(View v){
// ...
}
}
ので
public class OverviewPresenter implements OverviewContract.Events {
OverviewContract.View view;
public OverviewPresenter(OverviewContract.View overviewView) {
view = overviewView;
}
@Override
public void loadHistory() {
// TODO
}
@Override
public void addNewEvent() {
// TODO
}
}
私は問題を抱えています
は、プレゼンターのためのプロバイダであるようプレゼンターが見えます。 OverviewPresenter
の依存関係の1つはOverviewActivity
ですが、のインスタンスをOverviewPresenter
に挿入するにはどうすればよいですか?
@Module
public class PresenterModule {
@Provides
static OverviewPresenter provideOverviewPresenter(){
return new OverviewPresenter(/* pass in the instance of the activity here?? */);
}
}
マイコンポーネントは、私はまだ短剣のまわりで私の頭をラップしようとしています、これは道オフベースであるなら、私を許し
@Component(modules = {PresenterModule.class})
public interface OverviewComponent {
void inject(OverviewActivity overviewActivity);
}
のように見えます。
TLDR:
OverviewActivityにOverviewActivityのインスタンスが注入されたOverviewPresenterを使用してOverviewActivityを注入できるようにするにはどうすればよいですか?
グレート答えについて多くを語っています。ありがとうございました。私はこの作業をするのがとてもうれしいです – Stephen
プレゼンターに注入する必要がある各 'View'に対して専用' @ Module'sと '@Component'sを作成する必要がありますか?この場合、@Dakshは – Daksh
です。あなたはいくつかのクラスを再利用する、より一般的な解決法を考え出すことができるかもしれません。 –