单击事件:又叫做点击事件,是开发中使用最多的一种事件,没有之一
接口名:ClickedListener

实现步骤:

  1. 通过id找到组件
  2. 给按钮组件设置单击事件
  3. 写一个类实现ClickedListener接口并重写onClick方法
  4. 编写onClick方法体

首先修改ability_main.xml文件
添加:

<Buttonohos:id="$+id:but1"ohos:height="match_content"ohos:width="match_content"ohos:text="点我"ohos:text_size="200"ohos:background_element="red"/>

方法一:定义实现类

定义MyListener类:

class MyListener implements Component.ClickedListener {@Overridepublic void onClick(Component component) {//component : 所有组件的父类//参数 :  被点击的组件对象Button btu = (Button) component;btu.setText("被点了");}
}

整体代码:

package com.example.listenerapplication.slice;import com.example.listenerapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;public class MainAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//1.找到按钮Button but1 = (Button) findComponentById(ResourceTable.Id_but1);//2.给按钮绑定单击事件but1.setClickedListener(new MyListener());}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}
}class MyListener implements Component.ClickedListener {@Overridepublic void onClick(Component component) {//component : 所有组件的父类//参数 :  被点击的组件对象Button btu = (Button) component;btu.setText("被点了");}
}

onClick不方便调用其它组件

方法二 : 当前类作为实现类(常用)

当前类继承 Component.ClickedListener

public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener{public void onClick(Component component) {Button btu = (Button) component;btu.setText("被点了-1");}
}

整体代码:

public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//1.找到按钮Button but1 = (Button) findComponentById(ResourceTable.Id_but1);//2.给按钮绑定单击事件but1.setClickedListener(this);}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}@Overridepublic void onClick(Component component) {Button btu = (Button) component;btu.setText("被点了-2");}
}

onClick方便调用其它组件

方法三 : 匿名内部类

整体代码:

public class MainAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//1.找到按钮Button but1 = (Button) findComponentById(ResourceTable.Id_but1);//2.给按钮绑定单击事件but1.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {Button btu = (Button) component;btu.setText("被点了-3");}});}

缺点:只能用一次

方法四 : 方法引用(常用)

public class MainAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//1.找到按钮Button but1 = (Button) findComponentById(ResourceTable.Id_but1);//2.给按钮绑定单击事件//but1.setClickedListener(new MyListener());//but1.setClickedListener(this);/*but1.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {Button btu = (Button) component;btu.setText("被点了-3");}});*/but1.setClickedListener(this::onClick);}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}public void onClick(Component component) {Button btu = (Button) component;btu.setText("被点了-4");}
}

HarmonyOS开发01:单击事件相关推荐

  1. (3.1)HarmonyOS鸿蒙单击事件4种写法

    第二种和第四种常用 实现步骤: 1.通过id找到组件. 2.给需要的组件设置单击事件. 3.实现ClickedListener接口. 4.重写onClicked方法. 第一种,自定义实现类(在当前类外 ...

  2. 高德地图开发智慧社区网格化数据格式产生的无法单击事件的解决方案

    在使用高德地图卫星图,由于默认使用了 v1.4.15版本,导致3D罗盘无法靠左,切换成v2.0版的,又导致网格鼠标高亮和单击事件失效.经过和官方版本的多次比较,经验如下: 高德地图版本 v1.4.15 ...

  3. HTML 4.01 event 事件

    <Google Maps API 开发大全>陈育春编著   机械工业出版社 2010年01月 事件名称         支持元素                 说明 blur    A, ...

  4. 单击事件开启线程时,再次单击就会出现 java.lang.IllegalThreadStateException: Thread already started. 错误

    第一种解决方案:单击事件开启线程时,再次单击就会出现 java.lang.IllegalThreadStateException: Thread already started. 错误 解决办法: 创 ...

  5. HarmonyOS开发详解(二)——鸿蒙开发体系详解及入门实例演示运行

    本篇文章的计划,先体系的介绍一下鸿蒙开发相关的体系内容,希望通过本篇内容构建对鸿蒙开发体系的了解,最后再来一个最简单入门例子.既是自我的学习,也希望对你了解鸿蒙开发的全貌有帮助. 这样安排而没有直接写 ...

  6. 通过实例学Android应用开发01

    通过实例学安卓开发 序 实例 题目 程序结果展示界面 涉及到的知识点 布局 文本框控件 按钮控件 其他控件 实现过程 源码 总结 序 本人是十分厌烦理论知识的学习,咱学了十二年来到了高校,仍然还要学理 ...

  7. SwiftUI ScrollView 高级技巧之 01 单击按钮手动滚动到某个位置

    实战需求 SwiftUI ScrollView 高级技巧之 01 单击按钮手动滚动到某个位置 开发过程中,有时开发人员希望以编程方式滚动到特定位置,或者希望从下到上滚动,例如聊天视图.交易视图等,我们 ...

  8. java游戏服务器开发之八--网络事件监听器

    java游戏服务器开发之八-网络事件监听器 网络事件监听器,将网络变化交由NetworkListener处理 可以看到,我们现在所有的逻辑都是写在TcpMessageStringHandler里面, ...

  9. sharepoint2013 在office365 使用infopath 创建单击事件和视图,并建立切换规则

    sharepoint2013 在office365 使用infopath 创建单击事件和视图,并建立切换规则 1,新建空白表单 2,创建视图 3,新建按钮 4,选中按钮后,这里的地址你的视图名称叫TG ...

最新文章

  1. Daily Scrum 11.5
  2. CTF短秘钥的RSA解密
  3. 自然人税收管理系统扣缴客户端服务器超时,“自然人税收管理系统”扣缴客户端常见问题十问十答...
  4. cJSON源码及解析流程详解
  5. PATH and LDFLAGS and CFLAGS
  6. 股票开盘的最大成交额-----一道不错的贪心算法题目
  7. opencv-api minAreaRect
  8. executor-cores参数并未对vcores生效的原因分析
  9. 调用远程摄像头进行人脸识别_怎样快速搭建人脸识别通道?
  10. 对于接口得容错性测试
  11. mysql复制表结构创建新表
  12. 电池电压测试技术总结
  13. 排列组合相关笔试面试题(C++)
  14. Python之input()函数用法,如何接收单行或多行的输入多个参数
  15. ArangoDB数据类型
  16. Lua——迭代器的使用、pairs 和 ipairs区别
  17. 多大密西沙加计算机科学与技术,多伦多大学第二大校区——密西沙加校区专业及双录取介绍...
  18. 计算机免试生巢湖学院,关于公示计算机科学与工程学院2020届免试预推荐攻读研究生名单的通知...
  19. ios7系统圆角按钮有背景图片还显示为蓝色
  20. Shiro安全(四):Shiro权限绕过之Shiro-782

热门文章

  1. 免费下载各种json包的网址
  2. Google首席Java架构师访谈:选择编程语言就像选择酒吧
  3. Android的数据结构与算法----ArrayList源码解析
  4. 基于Mybatis-Plus的多租户架构下的数据隔离解决方案
  5. C++求圆的周长和面积
  6. CSR8670 /CSR8675 升级文件DFU制作
  7. Vuex中的Getter的使用
  8. 转移到ios下载安卓_转移到iOS app-转移到iOS(从Android转到iOS)苹果官方版_5577安卓网...
  9. 泛微e-cology9前台文件上传漏洞复现
  10. vue element ui 子组件向父组件传值