Saya ingin inject
view (Activity object)
menjadi Presenter
. Saat ini saya sedang mengatur tampilan secara manual menggunakan setter kelas Presenter. Bagaimana cara mencapai ini menggunakan Dagger? Bisakah Anda menunjukkan kepada saya contoh kode bagaimana melakukannya?
Beginilah Aktivitas utama menciptakan Presenter sampai sekarang
public class MainActivity extends AppCompatActivity implements CountPresenter.View, ToastPresenter.View {
@Inject
CountPresenter countPresenter;
@Inject
ToastPresenter toastPresenter;
TextView countText;
Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
countText = findViewById(R.id.text_count);
DaggerToastPresenterComponent.create().inject(this);
DaggerCountPresenterComponent.create().inject(this);
countPresenter.setView(this);
toastPresenter.setView(this) ;
findViewById(R.id.button_count).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
countPresenter.incrementCount();
}
});
findViewById(R.id.button_toast).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toastPresenter.handleToastButtonClick();
}
});
}
}
**Kode kelas presenter : **
public class CountPresenter {
private Counter counter ;
public void setView(View view) {
this.view = view;
}
private View view ;
@Inject
public CountPresenter() {
counter = Counter.getInstance() ;
}
public void incrementCount(){
counter.setCount(counter.getCount()+1);
view.setCounterText(counter.toString());
}
public interface View {
void setCounterText(String val) ;
}
}
Kode lengkap di sini :