【发布时间】:2020-05-01 20:20:03
【问题描述】:
我想把injectview (Activity object)变成Presenter。现在我正在使用 Presenter 类的设置器手动设置视图。如何使用 Dagger 实现这一目标?你能告诉我一个关于如何做的示例代码吗?
这就是目前主 Activity 创建 Presenter 的方式
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();
}
});
}
}
**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) ;
}
}
完整代码:
【问题讨论】:
-
发布您的演示者模块!
-
我已经提供了我的项目的链接..
标签: android dependency-injection dependencies dagger