目錄
一、簡介
二、定義實作類
三、目前類作為實作類
四、匿名内部類
五、方法引用
六、HarmonyOS(鴻蒙)全面學習-精選好文彙總
HarmonyOS(鴻蒙)開發過程中,使用到的最多的事件就是單擊事件,單擊事件一共有四種寫法,它們有一些細微的差別和場景。
四種寫法如下:
定義實作類
目前類作為實作類
匿名内部類
方法引用
定義實作類ClickedListener實作Component.ClickedListener接口并且重寫onClick方法
直接使用目前類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(鴻蒙)DevEco Studio開發環境搭建
HarmonyOS(鴻蒙)開發一文入門
兩個案例五分鐘輕松入門Harmony(鴻蒙)開發
HarmonyOS與Android的全面對比
HarmonyOS(鴻蒙)全網最全資源彙總,吐血整理,趕緊收藏!
HarmonyOS(鴻蒙)—— Ability與頁面
HarmonyOS(鴻蒙)——config.json詳解
HarmonyOS(鴻蒙)——啟動流程
HarmonyOS(鴻蒙)——全面入門,始于而不止于HelloWorld
HarmonyOS(鴻蒙)——單擊事件