【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
文章目錄
- 一、AbilitySlice 之間的界面跳轉(zhuǎn)
- 二、完整代碼示例
- 三、運(yùn)行結(jié)果
參考文檔 :
- Page Ability 基本概念
- Page Ability 聲明周期
- AbilitySlice 間導(dǎo)航
- 跨設(shè)備遷移
一、AbilitySlice 之間的界面跳轉(zhuǎn)
代碼示例 GitHub 地址 : https://github.com/han1202012/HarmonyHelloWorld
1. Page Ability 設(shè)置 AbilitySlice :
創(chuàng)建兩個(gè) AbilitySlice , 初始狀態(tài)下進(jìn)入的是 MainAbilitySlice , 然后跳轉(zhuǎn)到 MainAbilitySlice2 ;
初始 AbilitySlice 如下 , 在 onStart ( ) 方法中 , 調(diào)用 super.setUIContent ( ) 方法設(shè)置 XML 布局文件 , 相當(dāng)于 Android 中的 setContentView ( ) 方法 ;
XML 布局文件使用 ResourceTable.Layout_ability_main 方式引用 ;
上述實(shí)際的布局文件是在 HarmonyHelloWorld\entry\src\main\resources\base\layout 目錄下的 ability_main.xml 布局文件 ;
引用時(shí)在 ability_main 文件名稱前 , 加上了 ResourceTable.Layout_ 前綴 , 相當(dāng)于 Android 中的 R.layout. 前綴 ;
// 設(shè)置布局文件 super.setUIContent(ResourceTable.Layout_ability_main);2. 獲取按鈕組件 , 并設(shè)置點(diǎn)擊事件 :
在 AbilitySlice 中 , 調(diào)用 findComponentById ( ) 方法 , 可以獲取按鈕組件 ;
獲取的對(duì)象類型是 Component , 需要強(qiáng)轉(zhuǎn)為 Button 對(duì)象 ;
// 獲取 XML 布局中的 Button 按鈕 Button button = (Button) findComponentById(ResourceTable.Id_button);設(shè)置按鈕點(diǎn)擊事件 : 調(diào)用 setClickedListener ( ) 方法 , 設(shè)置 Component.ClickedListener 類型的點(diǎn)擊監(jiān)聽器 , 按鈕被點(diǎn)擊后 , 會(huì)自動(dòng)回調(diào) onClick ( ) 方法 ;
// 設(shè)置 Button 按鈕點(diǎn)擊事件button.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {}});3. 獲取 Text 組件 , 并設(shè)置顯示內(nèi)容 : 調(diào)用 findComponentById ( ) 方法獲取 Text 組件 , 需要強(qiáng)制轉(zhuǎn)換 ;
調(diào)用 Text 組件的 setText ( ) 方法 , 設(shè)置組件顯示的文字內(nèi)容 ;
// 獲取 Text 文字顯示組件Text text = (Text) findComponentById(ResourceTable.Id_text);// 獲取 Intent 中的數(shù)據(jù) , 并顯示到界面中text.setText("頁面 2 數(shù)據(jù) : " + intent.getIntParam("DATA", 0));4. 頁面跳轉(zhuǎn) :
① 創(chuàng)建 AbilitySlice : 創(chuàng)建要跳轉(zhuǎn)到的 AbilitySlice 對(duì)象 ;
② 創(chuàng)建 Intent : 用于數(shù)據(jù)傳遞 ;
③ 調(diào)用 present ( ) 方法 : 傳入 AbilitySlice 與 Intent 參數(shù) , 即可完成 AbilitySlice 界面跳轉(zhuǎn) ;
// 1. 初始化要跳轉(zhuǎn)的界面AbilitySlice slice = new MainAbilitySlice2();// 2. 初始化傳遞的 Intent 意圖Intent intent = new Intent();intent.setParam("DATA", 888);// 3. 跳轉(zhuǎn)到 MainAbilitySlice2 界面present(slice, intent);二、完整代碼示例
MainAbilitySlice 源碼 :
package com.example.harmony.slice;import com.example.harmony.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Button; import ohos.agp.components.Component; import ohos.agp.components.Text;public class MainAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);// 獲取 XML 布局中的 Button 按鈕Button button = (Button) findComponentById(ResourceTable.Id_button);// 設(shè)置 Button 按鈕點(diǎn)擊事件button.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {// 初始化要跳轉(zhuǎn)的界面AbilitySlice slice = new MainAbilitySlice2();// 初始化傳遞的 Intent 意圖Intent intent = new Intent();intent.setParam("DATA", 888);// 跳轉(zhuǎn)到 MainAbilitySlice2 界面present(slice, intent);}});}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);} }MainAbilitySlice 的 XML 布局文件 :
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:height="match_parent"ohos:width="match_parent"ohos:orientation="vertical"><Textohos:id="$+id:text"ohos:height="match_content"ohos:width="match_content"ohos:background_element="$graphic:background_ability_main"ohos:layout_alignment="horizontal_center"ohos:text="頁面 1"ohos:text_size="50"/><Buttonohos:id="$+id:button"ohos:height="match_parent"ohos:width="match_content"ohos:layout_alignment="bottom|horizontal_center"ohos:text="跳轉(zhuǎn)到 2 頁面"ohos:text_size="50"/></DirectionalLayout>MainAbilitySlice2 源碼 :
package com.example.harmony.slice;import com.example.harmony.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.components.Button; import ohos.agp.components.Component; import ohos.agp.components.Text;public class MainAbilitySlice2 extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main2);// 獲取 Text 文字顯示組件Text text = (Text) findComponentById(ResourceTable.Id_text);// 獲取 Intent 中的數(shù)據(jù) , 并顯示到界面中text.setText("頁面 2 數(shù)據(jù) : " + intent.getIntParam("DATA", 0));}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);} }MainAbilitySlice2 的 XML 布局文件 :
<?xml version="1.0" encoding="utf-8"?> <DirectionalLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:height="match_parent"ohos:width="match_parent"ohos:orientation="vertical"><Textohos:id="$+id:text"ohos:height="match_content"ohos:width="match_content"ohos:background_element="$graphic:background_ability_main"ohos:layout_alignment="horizontal_center"ohos:text="頁面 2"ohos:text_size="50"/></DirectionalLayout>三、運(yùn)行結(jié)果
運(yùn)行后初始主界面 :
點(diǎn)擊 " 跳轉(zhuǎn)到 2 頁面 " 按鈕 ;
總結(jié)
以上是生活随笔為你收集整理的【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【鸿蒙 HarmonyOS】Abilit
- 下一篇: 【鸿蒙 HarmonyOS】界面跳转 (