在另一个 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 以实现可重用性并进行单元测试。