在另一个 class 中分离 OnClick 内容
Separate OnClick Content in another class
我想在另一个 class 中分隔我的 OnClick 内容。
把onclick内容单独分开好不好class?
如果是,我的编码方式是正确的方式还是有人可以告诉我更好的方式?
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 应用程序的结构不允许您实现它。
那么有哪些选项呢?
好吧,你仍然可以分离关注点,但不是你这样做的方式,你放入不同 class 的代码都与 UI
相关,这样的代码应该保留在里面activity 的,因为它属于 表示层 。
您需要做的是将所有 业务逻辑 抽象出来以分离 classes。
您可以对 数据库逻辑 执行相同的操作。
然后您将能够通过实施设计模式更进一步,因为它可能适合例如存储库模式通过服务进行所有数据库事务。
或者您可能构建了一个 API 服务,所有人都通过它执行所有网络任务。
最后,如果您想更进一步,应用坚实的原则和依赖注入,创建 util classes 以实现可重用性并进行单元测试。
我想在另一个 class 中分隔我的 OnClick 内容。
把onclick内容单独分开好不好class?
如果是,我的编码方式是正确的方式还是有人可以告诉我更好的方式?
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 应用程序的结构不允许您实现它。
那么有哪些选项呢?
好吧,你仍然可以分离关注点,但不是你这样做的方式,你放入不同 class 的代码都与 UI
相关,这样的代码应该保留在里面activity 的,因为它属于 表示层 。
您需要做的是将所有 业务逻辑 抽象出来以分离 classes。
您可以对 数据库逻辑 执行相同的操作。
然后您将能够通过实施设计模式更进一步,因为它可能适合例如存储库模式通过服务进行所有数据库事务。
或者您可能构建了一个 API 服务,所有人都通过它执行所有网络任务。
最后,如果您想更进一步,应用坚实的原则和依赖注入,创建 util classes 以实现可重用性并进行单元测试。