统一事件编程模型

作者: looper1211 | 来源:发表于2016-05-31 23:18 被阅读94次

    接着上次为Activity定义新的生命周期讲的继续说,现在给按钮添加一个点击事件,代码如下

    public class MainActivity extends BaseActivity implements OnClickListener {
    
        @Override
        protected void initViews(Bundle saveInstanceState) {
            setContentView(R.layout.activity_main);
            Button btTest = $(R.id.bt_test);
            btTest.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bt_test:
                Intent intent = new Intent(this, LoginActivity.class);
                startActivity(intent);
                break;
            default:
                break;
            }
        }
    

    相信好多人都是这么些代码的,不能说不对,但反对这么些,看那个onClick方法,里面要使用switch...case...语句对R.id.bt_test的值进行判断,R这个类就会在程序中反复出现,这回扰乱面向对象的编程风格,不如在initViews方法中一次性把所有控件都初始化了,不要在频繁使用R.id了

    Android中还有另以一种事件编程方式,代码如下

    Button btTest = $(R.id.bt_test);
    btTest.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
              gotoLoginActivity();
        }
    });
    

    上面的代码有以下两个优点:

    1. 直接在btTest这个按钮对象上增加点击事件,是面向对象的写法;
    2. 将onclick方法的实现,封装成单独的方法,代码如下
    private void gotoLoginActivity() {
            Intent intent = new Intent(this, LoginActivity.class);
            startActivity(intent);
        }
    

    这样onclick()方法就不会那么臃肿了,代码也会清晰很多。

    相关文章

      网友评论

        本文标题:统一事件编程模型

        本文链接:https://www.haomeiwen.com/subject/wdchdttx.html