IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ??HarmonyOS(鸿蒙)??——单击事件的四种写法详述 -> 正文阅读

[系统运维]??HarmonyOS(鸿蒙)??——单击事件的四种写法详述

目录

一、简介

二、定义实现类

三、当前类作为实现类

四、匿名内部类

五、方法引用

六、HarmonyOS(鸿蒙)全面学习-精选好文汇总


一、简介

HarmonyOS(鸿蒙)开发过程中,使用到的最多的事件就是单击事件,单击事件一共有四种写法,它们有一些细微的区别和场景。
?

四种写法如下:

  1. 定义实现类
  2. 当前类作为实现类
  3. 匿名内部类
  4. 方法引用

二、定义实现类

定义实现类ClickedListener实现Component.ClickedListener接口并且重写onClick方法

/**
?*?实现ClickedListener接口并重写onClick方法
?*/
class?ClickedListener?implements?Component.ClickedListener?{

????/**
?????*?点击事件触发的操作会调用的方法
?????*?@param?component?????被点击的组件对象
?????*/
????@Override
????public?void?onClick(Component?component)?{
????????//?具体点击操作的逻辑处理
????????Button?button?=?(Button)?component;
????????button.setText("哦,我被点击了!");
????}
}

在MainAbilitySlice中通过控件的setClickedListener方法传入Component.ClickedListener接口的实现类ClickedListener

public?class?MainAbilitySlice?extends?AbilitySlice?{
????@Override
????public?void?onStart(Intent?intent)?{
????????super.onStart(intent);
????????super.setUIContent(ResourceTable.Layout_ability_main);

????????//1.?找到组件
????????Button?button?=?(Button)?this.findComponentById(ResourceTable.Id_button);

????????//2.?绑定单击事件
????????button.setClickedListener(new?ClickedListener());
????}

????@Override
????public?void?onActive()?{
????????super.onActive();
????}

????@Override
????public?void?onForeground(Intent?intent)?{
????????super.onForeground(intent);
????}
}

三、当前类作为实现类

直接使用当前类MainAbilitySlice作为Component.ClickedListener接口的实现类,这个与上面的区别在于,我们不需要单独定义一个实现类,同时可以在onClick方法中共享MainAbilitySlice的定义的相关变量

public?class?MainAbilitySlice?extends?AbilitySlice?implements?Component.ClickedListener?{
????@Override
????public?void?onStart(Intent?intent)?{
????????super.onStart(intent);
????????super.setUIContent(ResourceTable.Layout_ability_main);

????????//1.?找到组件
????????Button?button?=?(Button)?this.findComponentById(ResourceTable.Id_button);

????????//2.?绑定单击事件
????????button.setClickedListener(this);
????}

????@Override
????public?void?onActive()?{
????????super.onActive();
????}

????@Override
????public?void?onForeground(Intent?intent)?{
????????super.onForeground(intent);
????}

????@Override
????public?void?onClick(Component?component)?{
????????//?具体点击操作的逻辑处理
????????Button?button?=?(Button)?component;
????????button.setText("哦,我被点击了!");
????}
}

四、匿名内部类

直接setClickedListener方法中传入匿名内部类,new Component.ClickedListener() {},这样做的坏处在于代码不可重复使用,并且如果这样的写法过多,会导致代码可读性降低

public?class?MainAbilitySlice?extends?AbilitySlice?{
????@Override
????public?void?onStart(Intent?intent)?{
????????super.onStart(intent);
????????super.setUIContent(ResourceTable.Layout_ability_main);

????????//1.?找到组件
????????Button?button?=?(Button)?this.findComponentById(ResourceTable.Id_button);

????????//2.?绑定单击事件
????????button.setClickedListener(new?Component.ClickedListener()?{
????????????@Override
????????????public?void?onClick(Component?component)?{
????????????????//?具体点击操作的逻辑处理
????????????????Button?button?=?(Button)?component;
????????????????button.setText("哦,我被点击了!");
????????????}
????????});

????????/*
?????????*?lambda写法
?????????button.setClickedListener(component?->?{
????????????//?具体点击操作的逻辑处理
????????????Button?button1?=?(Button)?component;
????????????button1.setText("哦,我被点击了!");
????????});
????????*/
????}

????@Override
????public?void?onActive()?{
????????super.onActive();
????}

????@Override
????public?void?onForeground(Intent?intent)?{
????????super.onForeground(intent);
????}

}

五、方法引用

这种写法,无需新增类,MainAbilitySlice类也无需实现Component.ClickedListener接口,而是通过手动写一个同名、同参数的onClick方法,通过方法引用的方式来实现 button.setClickedListener(this::onClick);

public?class?MainAbilitySlice?extends?AbilitySlice?{
????@Override
????public?void?onStart(Intent?intent)?{
????????super.onStart(intent);
????????super.setUIContent(ResourceTable.Layout_ability_main);

????????//1.?找到组件
????????Button?button?=?(Button)?this.findComponentById(ResourceTable.Id_button);

????????//2.?绑定单击事件
????????button.setClickedListener(this::onClick);
????}

????@Override
????public?void?onActive()?{
????????super.onActive();
????}

????@Override
????public?void?onForeground(Intent?intent)?{
????????super.onForeground(intent);
????}

????public?void?onClick(Component?component)?{
????????//?具体点击操作的逻辑处理
????????Button?button?=?(Button)?component;
????????button.setText("哦,我被点击了!");
????}
}

六、HarmonyOS(鸿蒙)全面学习-精选好文汇总

HarmonyOS(鸿蒙)DevEco Studio开发环境搭建

HarmonyOS(鸿蒙)开发一文入门

两个案例五分钟轻松入门Harmony(鸿蒙)开发

HarmonyOS与Android的全面对比

HarmonyOS(鸿蒙)全网最全资源汇总,吐血整理,赶紧收藏!

HarmonyOS(鸿蒙)—— Ability与页面

HarmonyOS(鸿蒙)——config.json详解

HarmonyOS(鸿蒙)——启动流程

HarmonyOS(鸿蒙)——全面入门,始于而不止于HelloWorld

?HarmonyOS(鸿蒙)——单击事件

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:58:38  更:2021-08-15 15:58:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:30:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码