android开发的点击事件
天蓬老师
天蓬老师 2017-04-17 16:09:45
[Android讨论组]

我们知道,例如,android 的一个 Button 时间,
其 onclick 方法有几种实现方法:

  1. 匿名内部类

  2. Activity实现接口

  3. XML中设置 android:onclick 属性

  4. 外部类实现接口

我想知道,现实的 android 开发是会选择哪一种方式?
当一个 页面上需要很多点击事件的时候,哪一种方式会比较高效呢?
小白飘过~~~

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(7)
怪我咯

比较常用的是内部匿名实现,如果Activity趋向复杂,代码较多,可以方便的迁移到外部类实现。如果是多个按钮,推荐采用一个OnClick对象通过switch(View.getId())的方法统一写在一起,这样减少实例化对象的数量,优化内存占用。另外,不推荐在XML中绑定OnClick,这样是增加耦合的行为,并且对代码混淆也有影响。

黄舟

我一般就实现了listener在activity 中重写点击事件...强答一波只为看看大家的看法

天蓬老师

推荐使用:ButterKnife

PHP中文网
  1. 使用第三方的库

    Android依赖注入:Dagger、RoboGuice和ButterKnife
    
  2. XML的 onclick ,增加耦合,不可取。

  3. 匿名内部类: Activity 代码少可以用

  4. 当onclick很多时,建议转移到外部类去实现。

  5. 本类中实现 onclick 接口,代码少时可以用,减少麻烦。

PHPz

现在各种工具库也越来越多
等你慢慢往后学,你就知道你想用什么

巴扎黑

能不显式实现接口就不要显式实现接口,而是写成匿名内部类的形式。

推荐在外部类中添加个回调函数实现逻辑,然后匿名内部类中调用(就是swing设计器所生成的那种格式)。

public class XXXActivity extends Activity {

    Button xxxButton;
    // ...
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
       // ...
       
       xxxButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) { xxxButtonOnClick(view); }
        });
    }
    
    private void xxxButtonOnClick(View view)
    {
        // ...
    }

}

之所以这样,是因为java8中加入了匿名函数代替匿名内部类用做闭包,这样写的话便于以后的升级。

xxxButton.setOnClickListener(v -> xxxButtonOnClick(v));
高洛峰

ButterKnife来做onclick事件的飘过...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号