HarmonyOS 鸿蒙Next Tabs.TabContent中可以跳转到其他page吗,像个人信息跳转到独立的新界面
HarmonyOS 鸿蒙Next Tabs.TabContent中可以跳转到其他page吗,像个人信息跳转到独立的新界面
import router from '@ohos.router';
import { userInfo} from '../user/userInfo'
@Entry
@Component
struct userIndex {
@State fontColor: string = '#182431'
@State selectedFontColor: string = '#007DFF'
@State currentIndex: number = 0
private controller: TabsController = new TabsController()
@Builder tabBuilder(index: number, name: string) {
Column() {
Text(name)
.fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
.fontSize(16)
.fontWeight(this.currentIndex === index ? 500 : 400)
.lineHeight(22)
.margin({ top: 17, bottom: 7 })
Divider()
.strokeWidth(2)
.color('#007DFF')
.opacity(this.currentIndex === index ? 1 : 0)
}.width('100%')
}
build() {
Column() {
Tabs({ barPosition: BarPosition.Start, index: this.currentIndex, controller: this.controller }) {
TabContent() {
Text('a')
}.tabBar(this.tabBuilder(0, 'a'))
TabContent() {
Text('b')
}.tabBar(this.tabBuilder(1, 'b'))
TabContent() {
Text('c')
}.tabBar(this.tabBuilder(2, 'c'))
TabContent() {
userInfo()
}.tabBar(this.tabBuilder(3, '个人信息'))
}
.vertical(false)
.barMode(BarMode.Fixed)
.barWidth(360)
.barHeight(56)
.animationDuration(400)
.onChange((index: number) => {
this.currentIndex = index
})
.width('100%')
.height('100%')
.backgroundColor('#F1F3F5')
}.width('100%')
}
}
import router from '@ohos.router';
import { userInfo} from '../user/userInfo'
@Entry
@Component
struct userIndex {
@State fontColor: string = '#182431'
@State selectedFontColor: string = '#007DFF'
@State currentIndex: number = 0
private controller: TabsController = new TabsController()
@Builder tabBuilder(index: number, name: string) {
Column() {
Text(name)
.fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
.fontSize(16)
.fontWeight(this.currentIndex === index ? 500 : 400)
.lineHeight(22)
.margin({ top: 17, bottom: 7 })
Divider()
.strokeWidth(2)
.color('#007DFF')
.opacity(this.currentIndex === index ? 1 : 0)
}.width('100%')
}
build() {
Column() {
Tabs({ barPosition: BarPosition.Start, index: this.currentIndex, controller: this.controller }) {
TabContent() {
Text('a')
}.tabBar(this.tabBuilder(0, 'a'))
TabContent() {
Text('b')
}.tabBar(this.tabBuilder(1, 'b'))
TabContent() {
Text('c')
}.tabBar(this.tabBuilder(2, 'c'))
TabContent() {
userInfo()
}.tabBar(this.tabBuilder(3, '个人信息'))
}
.vertical(false)
.barMode(BarMode.Fixed)
.barWidth(360)
.barHeight(56)
.animationDuration(400)
.onChange((index: number) => {
this.currentIndex = index
})
.width('100%')
.height('100%')
.backgroundColor('#F1F3F5')
}.width('100%')
}
}
3 回复
可以用router跳转到新Page,也可以用Navigation跳转到子页
谢谢,已解决!我之前用过router发现不行,因为我的url写的是./文件名,刚刚看Navigation的时候发现,router的url必须要和main_page.json中声明的路径一样才可以!
HarmonyOS 鸿蒙Next Tabs.TabContent中可以跳转到其他page。在HarmonyOS鸿蒙Next中,Tabs组件通常用于在同一个页面内展示多个TabContent内容。然而,如果你希望在点击某个Tab时跳转到独立的新界面,这是可以实现的。
你可以通过编程方式,在Tab的点击事件中触发页面跳转逻辑。具体来说,可以使用HarmonyOS提供的路由模块(Router)来实现页面间的跳转。在Tabs的某个TabContent的点击事件中,调用router.push()方法,并传入目标页面的URL和参数(如果有的话)。
需要注意的是,目标页面的URL必须与应用的配置文件(如main_page.json)中声明的路径一致,否则跳转可能会失败。
此外,如果你希望在跳转后保持底部Tabs不随着页面切换而改变,你可能需要在应用架构上进行一些调整,例如使用不同的页面栈来管理Tabs页面和其他页面。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html