HarmonyOS 鸿蒙Next从界面A跳转到界面B,在从界面B跳转到界面C,界面C在跳转到界面A同时要销毁界面B和界面C
HarmonyOS 鸿蒙Next从界面A跳转到界面B,在从界面B跳转到界面C,界面C在跳转到界面A同时要销毁界面B和界面C
从界面A 通过跳转到界面B,用户可以点击返回键 返回到界面A
再从界面B 跳转到界面C,用户可以点击返回键 返回到界面B
界面C在跳转到界面A 此时用户点击返回键不能返回到界面C和界面B
在从界面C 跳转到界面A时 怎样销毁界面C和界面B
如果页面跳转使用的是router跳转,可以使用router.clear()方法去清楚页面栈,下面是一个跳转demo
// Page1.ets
import router from '@ohos.router';
@Component
struct Page1 {
@State message: string = '我是页面A,点我跳转页面B';
aboutToAppear(): void {
router.clear();
}
build() {
RelativeContainer() {
Text(this.message)
.id('Page1HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(()=>{
router.pushUrl({url: 'pages/Page2' })
})
Button('back').onClick(()=>{
router.back();
})
}
.height('100%')
.width('100%')
}
}
// Page2.ets
import router from '@ohos.router';
@Component
struct Page2 {
@State message: string = '我是页面B,点我跳转页面C';
build() {
RelativeContainer() {
Text(this.message)
.id('Page2HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(()=>{
router.pushUrl({url: 'pages/Page3' })
})
Button('back').onClick(()=>{
router.back();
})
}
.height('100%')
.width('100%')
}
}
// Page3.ets
import router from '@ohos.router';
@Component
struct Page3 {
@State message: string = '我是页面C,点我跳转页面A并清空路由栈';
build() {
RelativeContainer() {
Text(this.message)
.id('Page3HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(()=>{
router.pushUrl({url: 'pages/Page1' })
})
Button('back').onClick(()=>{
router.back();
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next从界面A跳转到界面B,在从界面B跳转到界面C,界面C在跳转到界面A同时要销毁界面B和界面C的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
使用navigation的话,直接使用**页面栈对象.popToName(‘页面A’)**就可以了
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
使用router的话,直接使用router.back(‘指定页面就可以了’)
直接替换栈后清空路由行不行? 你用的什么路由?
跳转到C后,去路由栈里去找到A,B的页面,然后移除掉就行
在HarmonyOS中,通过AbilitySlice实现界面跳转时,可以使用present
和terminate
方法来控制页面的生命周期。从界面A跳转到界面B,可以使用present
方法。接着从界面B跳转到界面C,同样使用present
方法。当从界面C跳转回界面A时,可以通过terminate
方法销毁界面B和界面C。具体代码示例如下:
// 界面A跳转到界面B
let intentB = new Intent();
intentB.setAbilitySlice("SliceB");
this.present(intentB);
// 界面B跳转到界面C
let intentC = new Intent();
intentC.setAbilitySlice("SliceC");
this.present(intentC);
// 界面C跳转回界面A并销毁界面B和界面C
let intentA = new Intent();
intentA.setAbilitySlice("SliceA");
this.terminate();
this.present(intentA);
通过terminate
方法,可以销毁当前页面并返回到指定的页面。