国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

HarmonyOS實戰(zhàn)—單擊事件的四種寫法

開發(fā) 前端 OpenHarmony
編寫實現(xiàn)類(MyListener)去實現(xiàn) Component.ClickedListener 接口,在類里面重新下 onClick 方法,把點擊代碼實現(xiàn)的操作就寫在 onClick 方法當(dāng)中。

[[414826]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

單擊事件的四種寫法  

1. 自己編寫實現(xiàn)類

  • 編寫實現(xiàn)類(MyListener)去實現(xiàn) Component.ClickedListener 接口
  • 在類里面重新下 onClick 方法,把點擊代碼實現(xiàn)的操作就寫在 onClick 方法當(dāng)中
  • 實現(xiàn)代碼:

  • 創(chuàng)建項目名為:ListenerApplication

ability_main.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:alignment="center" 
  7.     ohos:orientation="vertical"
  8.  
  9.     <Button 
  10.         ohos:id="$+id:but1" 
  11.         ohos:height="match_content" 
  12.         ohos:width="match_content" 
  13.         ohos:text="點我" 
  14.         ohos:text_size="200" 
  15.         ohos:background_element="red"
  16.     </Button> 
  17.  
  18. </DirectionalLayout> 

 MainAbilitySlice

  1. package com.example.listenerapplication.slice; 
  2.  
  3. import com.example.listenerapplication.ResourceTable; 
  4. import ohos.aafwk.ability.AbilitySlice; 
  5. import ohos.aafwk.content.Intent; 
  6. import ohos.agp.components.Button; 
  7. import ohos.agp.components.Component; 
  8.  
  9. public class MainAbilitySlice extends AbilitySlice { 
  10.     @Override 
  11.     public void onStart(Intent intent) { 
  12.         super.onStart(intent); 
  13.         super.setUIContent(ResourceTable.Layout_ability_main); 
  14.  
  15.         //1.找到按鈕 
  16.         //完整寫法:this.findComponentById(ResourceTable.Id_but1); 
  17.         //this:本類的對象,指:MainAbilitySlice(子界面對象) 
  18.         // 在子界面當(dāng)中,通過 id 找到對應(yīng)的組件 
  19.         // 用this去調(diào)用方法,this可以省略不寫 
  20.         //findComponentById(ResourceTable.Id_but1); 
  21.         //返回一個組件對象(所以組件的父類對象) 
  22.         //那么我們在實際寫代碼的時候,需要向下轉(zhuǎn)型:強(qiáng)轉(zhuǎn) 
  23.         Component but1 = (Button) findComponentById(ResourceTable.Id_but1); 
  24.  
  25.         //2.給按鈕綁定單擊事件,當(dāng)點擊后,就會執(zhí)行 MyListener 中的方法,點一次執(zhí)行一次 
  26.         // 而方法就是下面點擊的內(nèi)容 
  27.         but1.setClickedListener(new MyListener()); 
  28.  
  29.     } 
  30.  
  31.     @Override 
  32.     public void onActive() { 
  33.         super.onActive(); 
  34.     } 
  35.  
  36.     @Override 
  37.     public void onForeground(Intent intent) { 
  38.         super.onForeground(intent); 
  39.     } 
  40.  
  41. class MyListener implements Component.ClickedListener{ 
  42.  
  43.     @Override 
  44.     public void onClick(Component component) { 
  45.         //Component:所有組件的父類 
  46.         //component參數(shù): 被點擊的組件對象,在這里就表示按你的對象 
  47.         //component.setText(); setText是子類特有的方法,需要向下轉(zhuǎn)型:強(qiáng)轉(zhuǎn) 
  48.         Button but = (Button) component; 
  49.         but.setText("被點了"); 
  50.     } 

制運行:

  • 點擊后:

2. 當(dāng)前類實現(xiàn)接口

  • ability_main.xml 中把ohos:text_size="50",其他跟上面一樣不變
  • MainAbilitySlice 中只需把上面新建的類 MyListener 給去掉,然后 AbilitySlice 實現(xiàn) ClickedListener 接口類中的 onClick 方法,給本類的 but1按鈕直接綁定單價事件
  1. package com.example.listenerapplication.slice; 
  2.  
  3. import com.example.listenerapplication.ResourceTable; 
  4. import ohos.aafwk.ability.AbilitySlice; 
  5. import ohos.aafwk.content.Intent; 
  6. import ohos.agp.components.Button; 
  7. import ohos.agp.components.Component; 
  8.  
  9. public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener { 
  10.     @Override 
  11.     public void onStart(Intent intent) { 
  12.         super.onStart(intent); 
  13.         super.setUIContent(ResourceTable.Layout_ability_main); 
  14.  
  15.         //1.找到按鈕 
  16.         //完整寫法:this.findComponentById(ResourceTable.Id_but1); 
  17.         //this:本類的對象,指:MainAbilitySlice(子界面對象) 
  18.         // 在子界面當(dāng)中,通過 id 找到對應(yīng)的組件 
  19.         // 用this去調(diào)用方法,this可以省略不寫 
  20.         //findComponentById(ResourceTable.Id_but1); 
  21.         //返回一個組件對象(所以組件的父類對象) 
  22.         //那么我們在實際寫代碼的時候,需要向下轉(zhuǎn)型:強(qiáng)轉(zhuǎn) 
  23.         Component but1 = (Button) findComponentById(ResourceTable.Id_but1); 
  24.  
  25.         //2.給but1綁定單擊事件,當(dāng)事件被觸發(fā)后,就會執(zhí)行本類中的onClick方法,this就代表本類 
  26.         but1.setClickedListener(this); 
  27.     } 
  28.  
  29.     @Override 
  30.     public void onActive() { 
  31.         super.onActive(); 
  32.     } 
  33.  
  34.     @Override 
  35.     public void onForeground(Intent intent) { 
  36.         super.onForeground(intent); 
  37.     } 
  38.  
  39.     @Override 
  40.     public void onClick(Component component) { 
  41.         Button but = (Button) component; 
  42.         but.setText("被點了——單擊事件的第二種寫法"); 
  43.     } 
  • 運行:

  • 點擊后:

3. 自己編寫實現(xiàn)類 和 當(dāng)前類實現(xiàn)接口 的區(qū)別

如果添加在按鈕上面添加一個Text文本內(nèi)容,當(dāng)按鈕點擊后就會修改文本框的內(nèi)容

改動第一個案例中的代碼:添加Text文本框

  • 上面的 onStart 方法中 text1 是局部變量,如果用第一種方法(自己編寫實現(xiàn)類)來寫, MyListener 不能調(diào)用到 text1 變量

  • 如果使用第二種方法(當(dāng)前類實現(xiàn)接口),就要把 text1 提到成員變量,再把設(shè)置點擊后的內(nèi)容添加到 onClick 方法中

  • 如果在點擊按鈕之后,需要操作其他的組件對象,那么就可以使用第二種方式(當(dāng)前類實現(xiàn)接口)。
  • 如果在點擊按鈕之后,不需要操作其他的組件對象,就可以使用第一種方式(自己編寫實現(xiàn)類)。

4. 匿名內(nèi)部類

采用匿名內(nèi)部類就不需要實現(xiàn) implement ClickedListener 接口,也不需要再新建一個類了

  • 但使用匿名內(nèi)部類的代碼只能使用一次。當(dāng)使用代碼需要用一次的時候,可以采用匿名內(nèi)部類的形式來簡化代碼
  • 直接 new ClickedListener 就能實現(xiàn)了,然后把第一種實現(xiàn)方式(自己編寫實現(xiàn)類)中的 onClick 拿過來或第二種方式(當(dāng)前類實現(xiàn)接口)實現(xiàn)的 onClick 方法拿過來就行了(其實這兩者的onClick方法的內(nèi)容是一樣的),如下:
  1. but1.setClickedListener(new Component.ClickedListener() { 
  2.     @Override 
  3.     public void onClick(Component component) { 
  4.         Button but = (Button) component; 
  5.         but.setText("被點了——單擊事件的第三種寫法"); 
  6.         text1.setText("被點擊了"); 
  7.     } 
  8. }); 

 運行:

  • 當(dāng)被點擊后,觸發(fā)了 onClick 方法中兩個設(shè)置文本的方法(Button和Text文本都發(fā)生了變化)

5. 方法引用

  • 這個方法的形參和方法的返回值類型需要跟接口里的抽象方法里的形參和返回值類型要保持一致
  • 代碼實現(xiàn),布局代碼不變跟匿名內(nèi)部類的一致,改動如下:
  • 直接編寫 onClick 方法,不帶 @Override ,然后在 onStart 方法中直接調(diào)用即可
  1. package com.example.listenerapplication.slice; 
  2.  
  3. import com.example.listenerapplication.ResourceTable; 
  4. import ohos.aafwk.ability.AbilitySlice; 
  5. import ohos.aafwk.content.Intent; 
  6. import ohos.agp.components.Button; 
  7. import ohos.agp.components.Component; 
  8. import ohos.agp.components.Text; 
  9.  
  10. public class MainAbilitySlice extends AbilitySlice { 
  11.     Text text1 = null
  12.     @Override 
  13.     public void onStart(Intent intent) { 
  14.         super.onStart(intent); 
  15.         super.setUIContent(ResourceTable.Layout_ability_main); 
  16.  
  17.         Component but1 = (Button) findComponentById(ResourceTable.Id_but1); 
  18.  
  19.         text1 = (Text) findComponentById(ResourceTable.Id_text1); 
  20.  
  21.         but1.setClickedListener(this::onClick); 
  22.     } 
  23.  
  24.     @Override 
  25.     public void onActive() { 
  26.         super.onActive(); 
  27.     } 
  28.  
  29.     @Override 
  30.     public void onForeground(Intent intent) { 
  31.         super.onForeground(intent); 
  32.     } 
  33.  
  34.  
  35.     public void onClick(Component component) { 
  36.         Button but = (Button) component; 
  37.         but.setText("被點了——單擊事件的第四種寫法"); 
  38.         text1.setText("被點擊了"); 
  39.     } 

  • 當(dāng)按鈕被點擊后,就要執(zhí)行this本類中的onClick方法,相當(dāng)于把下面的public void onClick...方法拿過來,引用了一下,當(dāng)做抽象方法的方法體。
  • 運行:

6. 小節(jié)

當(dāng)前類作為實現(xiàn)類和方法引用是比較常用的。其他的寫法也要掌握了解即可。

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2022-06-10 08:01:17

ReduxReact

2022-03-22 08:59:32

勒索軟件網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2011-11-24 16:34:39

Java

2017-07-06 15:40:19

DevOps核心能力

2012-09-11 09:55:26

編程HTML5編程能力

2019-10-24 07:42:28

Java引用GC

2011-03-16 09:05:53

NATiptables

2021-10-24 08:37:18

網(wǎng)絡(luò)監(jiān)控網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)

2021-12-01 23:05:27

物聯(lián)網(wǎng)計算數(shù)據(jù)

2020-06-12 08:28:29

JavaScript開發(fā)技術(shù)

2013-05-30 10:06:05

光纖光纖跳線

2013-06-14 15:24:57

Android開發(fā)移動開發(fā)數(shù)據(jù)存儲方式

2020-11-10 10:08:41

Kubernetes容器開發(fā)

2023-02-10 11:13:42

網(wǎng)絡(luò)功耗無線網(wǎng)絡(luò)設(shè)備

2010-10-19 17:40:30

SqlServer主鍵

2018-12-05 16:25:14

2020-06-24 07:49:13

Kubernetes場景網(wǎng)絡(luò)

2020-05-19 20:13:04

物聯(lián)網(wǎng)計算類型IOT

2022-07-04 12:07:57

智慧城市智能建筑物聯(lián)網(wǎng)

2017-04-17 19:31:03

Android多線程
點贊
收藏

51CTO技術(shù)棧公眾號

成人精品视频网站| 国产精品久久久久婷婷| 激情久久综合| 成人一二三区| 色婷婷狠狠五月综合天色拍| 日韩av中字| 午夜激情在线| 欧美r级在线| 成人欧美亚洲| 久青青在线观看视频国产| 99热在线网站| 久草.com| 国产色视频在线播放| 一本—道久久a久久精品蜜桃| 欧美日韩精品久久久免费观看| 成人中文字幕+乱码+中文字幕| 国产精品∨欧美精品v日韩精品| 91大神福利视频在线| 欧美美女操人视频| 欧美成人午夜激情视频| 久久久999国产精品| xxx成人少妇69| 北条麻妃一区二区三区中文字幕| 久久久午夜精品| y97精品国产97久久久久久| 91精品视频一区| 国产成人精品无码播放| 91片在线免费观看| 日韩精品极品在线观看| 黑料吃瓜在线观看| 毛片在线播放视频| 青青青国产在线观看| 熟女少妇在线视频播放| 欧美a在线视频| 青青青国产在线视频| 国产一级做a爰片久久| 亚洲jjzzjjzz在线观看| 啊啊啊好爽视频| 四虎国产精品成人免费4hu| 成人免费看黄网址| 日本视频一二区| 中文字幕在线观看第一页| 在线黄色国产视频| av在线电影网| 免费影视亚洲| av有声小说一区二区三区| 亚洲欧美专区| 露出调教综合另类| 三区四区不卡| 激情国产一区| 麻豆精品精品国产自在97香蕉| 国产精品自在在线| 中国黄色片免费看| 国产乱子伦一区二区三区国色天香| 国产一区二区三区免费不卡| 欧美激情在线播放| 国内精品视频久久| 国产日本在线| 国产视频一区二区三区在线观看| 欧美一级大片视频| 免费人成在线观看视频播放| 色狠狠一区二区三区| 在线播放一区| eeuss鲁片一区| 日本不卡中文字幕| 综合激情一区| 欧美三级网页| 激情综合自拍| 日韩—二三区免费观看av| 日产欧产美韩系列久久99| 黑人巨大精品欧美黑白配亚洲| 成人午夜在线播放| 欧美国产综合色视频| 亚洲一二三四久久| 欧美日韩色综合| 亚洲激情久久久| 伊人青青综合网站| 国产亚洲精品日韩| 特黄aaaaaaaaa毛片免费视频| 美女网站色精品尤物极品姐弟| 亚洲成人第一页| 三级一区在线视频先锋| 久久99精品久久久久久久久久久久| 成人免费在线电影网| 久久免费国产视频| 98在线视频| 国产精品久久久久影院亚瑟| 高清一区二区| 5566成人精品视频免费| a毛片在线看免费观看| 亚洲444eee在线观看| 91在线视频| 国产福利一区二区| 日本视频一区二区不卡| 国产精品一区三区| 91禁国产网站| 日韩欧美中文字幕公布| 亚洲午夜久久久影院| 97在线视频免费| 动漫一区二区在线| 99精品一级欧美片免费播放| 成人免费视频77777| 91电影在线播放| 97色婷婷成人综合在线观看| 亚洲精品91| 国产成人精品影视| 亚洲激情图片小说视频| 欧美成人a视频| 欧美成人激情视频免费观看| 91精品国产99久久久久久红楼| 中国女人做爰视频| 中文字幕一区二区三区域| 91福利在线尤物| 日韩母乳在线| 久久看片网站| 欧美国产综合色视频| 91精品在线一区二区| 欧美成人国产va精品日本一级| 91麻豆蜜桃| 久久久久久久久久久免费视频| 国产大片在线免费观看| 国产精品高清一区二区| 一本综合久久| 日韩理论片中文av| 日韩国产高清视频在线| 欧美影院在线播放| 欧美 国产 精品| 视频午夜在线| 国产日本亚洲| 久久国产精品毛片| 亚洲精品日韩一| 亚洲少妇中文在线| 国产成人免费观看| 成人黄色电影网址| 92国产精品| 精品成人免费| 1024亚洲合集| 一区二区欧美久久| 国外成人在线视频网站| 四虎av网址| 欧美va在线观看| 亚洲国产午夜| 亚洲精品美腿丝袜| 日韩中文字幕国产| 日本免费高清一区二区| 一本大道香蕉久在线播放29| 午夜视频一区二区在线观看| 蜜桃av一区二区三区电影| 欧美日韩一区二区免费在线观看| www.亚洲天堂| 午夜精品一区二区在线观看| 性感美女激情视频在线观看| 视频一区日韩精品| 国产精品综合二区| 日韩美女一区二区三区四区| 91综合免费在线| 99热热99| 国产69精品久久久久9999人| 日韩电影在线一区二区三区| 色欧美日韩亚洲| 欧美中文在线观看| a√天堂在线观看| ****av在线网毛片| 亚洲大片在线| 一区二区三区四区不卡视频| 久久久成人精品视频| 综合网五月天| www在线视频| 国产综合网站| 亚洲18女电影在线观看| 91精品国产高清久久久久久| 国模吧无码一区二区三区| 成人美女黄网站| 欧美aaa在线| 欧美性猛交xxxx乱大交退制版| 国产精品网站大全| ckplayer中文字幕| 第一区第二区在线| 久久一夜天堂av一区二区三区 | 91色视频在线| 亚洲护士老师的毛茸茸最新章节| 欧美高清视频一区| av网站无病毒在线| 欧美区一区二| 欧美日韩中文字幕日韩欧美| 国产精品色婷婷视频| 91亚洲免费视频| 中文字幕av一区二区三区四区| 91视视频在线观看入口直接观看www | 欧美日韩免费一区二区三区| 国产一区视频在线| 国产午夜在线| 欧美人妖视频| 国产精品丝袜久久久久久app| 久久中文字幕视频| 男人靠女人免费视频网站| 日韩五码电影| 久久久国产精华| 欧美国产日韩一区二区三区| 欧美午夜性生活|