我想将 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();
}
}
最佳答案
您的问题没有确切答案。
您想要实现的目标是什么?
对我来说,这听起来像是您想要关注点分离。
MVC
解决此类问题会很棒,但不幸的是 Android 应用程序的结构不允许您实现它。
那么有哪些选择?
好吧,你仍然可以分离关注点,但不是你这样做的方式,你放入不同类中的代码都与 UI
相关,这样的代码应该保留在 Activity 内部因为它属于表示层。
您需要做的是将所有业务逻辑抽象到单独的类中。
您可以使用数据库逻辑执行相同的操作。
然后,您将能够通过实现设计模式来更进一步,因为它可能适合例如存储库模式,以通过服务进行所有数据库事务。
或者您可能构建一个 API 服务,所有网络任务都通过它执行。
最后,如果您想更进一步,请应用可靠的原则和依赖项注入(inject),创建 util 类以实现可重用性并进行单元测试。
关于java - 将 OnClick 内容单独放在另一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325908/