HarmonyOS 鸿蒙Next Navigation怎么在工具类中pop
HarmonyOS 鸿蒙Next Navigation怎么在工具类中pop
请参考一下代码: 1.PageOne.ets
import { Utility } from './utility'
class TmpClass{
count:number=10
}
@Builder
export function PageOneBuilder(name: string, param: Object) {
PageOne()
}
@Component
export struct PageOne {
pageInfos: NavPathStack = new NavPathStack()
build() {
NavDestination() {
Column() {
Button('pushPathByName', { stateEffect: true, type: ButtonType.Capsule })
.width('80%')
.height(40)
.margin(20)
.onClick(() => {
let tmp = new TmpClass()
this.pageInfos.pushPathByName('pageTwo', tmp) //将name指定的NavDestination页面信息入栈,传递的数据为param
})
Button('工具类中返回', { stateEffect: true, type: ButtonType.Capsule })
.width('80%')
.height(40)
.margin(20)
.onClick(() => {
new Utility(this.pageInfos).pop()
// uuu.pop()
})
}.width('100%').height('100%')
}.title('pageOne')
.onBackPressed(() => {
console.log('触发了。。。。。。。')
return false
}).onReady((context: NavDestinationContext) => {
this.pageInfos = context.pathStack
})
}
}
2.utility.ets
export class Utility{
pageInfos: NavPathStack
constructor(pageInfos: NavPathStack) {
this.pageInfos = pageInfos
}
pop(){
let responseCode:number =200
if (responseCode == 200) {
this.pageInfos.pop()
}else {
console.info('出错了')
}
}
}
3.其他页面代码请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-navigation-V5#示例2
请参考一下代码:
1.PageOne.ets
// PageOne.ets
import { Utility } from './utility'
class TmpClass{
count:number=10
}
@Builder
export function PageOneBuilder(name: string, param: Object) {
PageOne()
}
@Component
export struct PageOne {
pageInfos: NavPathStack = new NavPathStack()
aboutToAppear(): void {
}
build() {
NavDestination() {
Column() {
Button('pushPathByName', { stateEffect: true, type: ButtonType.Capsule })
.width('80%')
.height(40)
.margin(20)
.onClick(() => {
let tmp = new TmpClass()
this.pageInfos.pushPathByName('pageTwo', tmp) //将name指定的NavDestination页面信息入栈,传递的数据为param
})
Button('工具类中返回', { stateEffect: true, type: ButtonType.Capsule })
.width('80%')
.height(40)
.margin(20)
.onClick(() => {
new Utility().pop()
// uuu.pop()
})
}.width('100%').height('100%')
}.title('pageOne')
.onBackPressed(() => {
console.log('触发了。。。。。。。')
return false
}).onReady((context: NavDestinationContext) => {
this.pageInfos = context.pathStack
AppStorage.setOrCreate('PropA',this.pageInfos);
})
}
}
2.utility.ets
export class Utility{
pageInfos: NavPathStack | undefined = AppStorage.get('PropA')
pop(){
let responseCode:number =200
if (responseCode == 200) {
if (this.pageInfos) {
this.pageInfos.pop()
}
console.info('ssss=',this.pageInfos?.getAllPathName())
}else {
console.info('出错了')
}
}
}
更多关于HarmonyOS 鸿蒙Next Navigation怎么在工具类中pop的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,Next Navigation的pop
操作通常用于返回上一个页面或移除当前页面栈中的页面。如果你希望在工具类中实现这一功能,可以通过获取当前页面的Ability
实例或者PageStack
管理器来进行操作。
具体步骤如下:
-
获取当前页面的Ability实例:通过依赖注入或者全局变量等方式,在工具类中持有对当前
Ability
的引用。 -
使用PageStack进行页面管理:在HarmonyOS中,
PageStack
是管理页面栈的类,你可以通过它执行pop
操作来返回上一个页面。 -
执行pop操作:一旦获取了页面栈的引用,可以直接调用
PageStack.getInstance().pop()
方法来移除当前页面。
示例代码(伪代码):
public class NavigationUtils {
public static void popPage() {
PageStack.getInstance().pop();
}
}
注意:上述代码为简化示例,实际使用时需确保PageStack
实例已正确初始化且当前上下文支持该操作。
如果工具类中的pop
方法未能达到预期效果,可能是由于页面栈管理不当或上下文环境不匹配。请检查相关配置和调用时机。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html