在另一个类中分隔OnClick内容

时间:2016-12-26 02:23:52

标签: java android butterknife

我想在另一个类中分离我的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();
    }

}

1 个答案:

答案 0 :(得分:1)

你的问题没有确切的答案。

你想要实现的目标是什么?

对我来说,这听起来像是想要分离关注点。

MVC解决此类问题会很棒,但不幸的是,Android应用程序的结构不允许您实现它。

那么有什么选择?

你仍然可以分开关注,但不是你的方式,你在不同的类中放置的代码,都与UI相关,这些代码应保留在活动内部,因为它属于到表示层

您需要做的是将所有业务逻辑抽象为单独的类。

您可以使用数据库逻辑执行相同操作。

然后,您将能够通过实现设计模式更进一步,因为它可能适用于Repository Pattern,以通过服务进行所有数据库事务。

或许您可以构建一个API服务,通过它可以执行所有网络任务。

最后如果你想更进一步,应用实体原则和依赖注入,创建用于可重用性的util类,并进行单元测试。