统一事件编程模型

接着上次为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()方法就不会那么臃肿了,代码也会清晰很多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,515评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,238评论 25 708
  • 本人初学Android,最近做了一个实现安卓简单音乐播放功能的播放器,收获不少,于是便记录下来自己的思路与知识总结...
    落日柳风阅读 19,528评论 2 41
  • 想要针对每个页面单独一个文件进行打包,但是r.js以及基本配置的grunt配置都是只能打包为一个文件。后来查了很久...
    Chiming志明阅读 1,257评论 0 0
  • 我做好了心里准备去迎接风雨 我站在那里,默不作声 你问我期末考试能考几分 我只能说考不了几分 你把东西递给我 说 ...
    绿蒲阅读 233评论 0 0

友情链接更多精彩内容