我想在另一个类中分离我的OnClick内容。
在另一个班级中分离onclick内容是否合适?
如果是的话,我的编码方式是正确的方法,还是有人能告诉我更好的方法?
public class MainActivity extends AppCompatActivity {
private ButtonsActions mButtonsActions;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mButtonsActions = new ButtonsActions(this);
}
@OnClick(R.id.btn1)
public void btnTest1() {
mButtonsActions.btnTest1();
}
@OnClick(R.id.btn2)
public void btnTest2() {
mButtonsActions.btnTest2();
}
}
public class ButtonsActions {
private MainActivity view;
public ButtonsActions(MainActivity view) {
this.view = view;
}
public void btnTest1() {
Toast toast = Toast.makeText(view, "Button 1 clicked!", Toast.LENGTH_SHORT);
toast.show();
}
public void btnTest2() {
Toast toast = Toast.makeText(view, "Button 2 clicked!", Toast.LENGTH_SHORT);
toast.show();
}
}
答案 0 :(得分:1)
你的问题没有确切的答案。
你想要实现的目标是什么?
对我来说,这听起来像是想要分离关注点。
MVC
解决此类问题会很棒,但不幸的是,Android应用程序的结构不允许您实现它。
那么有什么选择?
你仍然可以分开关注,但不是你的方式,你在不同的类中放置的代码,都与UI
相关,这些代码应保留在活动内部,因为它属于到表示层。
您需要做的是将所有业务逻辑抽象为单独的类。
您可以使用数据库逻辑执行相同操作。
然后,您将能够通过实现设计模式更进一步,因为它可能适用于Repository Pattern,以通过服务进行所有数据库事务。
或许您可以构建一个API服务,通过它可以执行所有网络任务。
最后如果你想更进一步,应用实体原则和依赖注入,创建用于可重用性的util类,并进行单元测试。