You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI Android导航后FlyoutMenu汉堡图标不显示问题

.NET MAUI Android端Flyout导航后不显示问题

问题详情

从MainPage导航到HomePage后,Android平台的FlyoutMenu(汉堡图标)无法显示,但Windows平台表现正常。直接启动HomePage时,Android端的Flyout图标能正常显示,仅导航操作后出现异常。

用过的导航代码:

await Shell.Current.GoToAsync($"{nameof(HomePage)}"); 
await Navigation.PushAsync(new HomePage());

已尝试但无效的操作:

await Shell.Current.GoToAsync($"{nameof(Home)}");
//  await Navigation.PushAsync(new Home());

Shell.Current.FlyoutBehavior = FlyoutBehavior.Flyout;
Shell.Current.FlyoutIsPresented = false;

可行解决方案

1. 停止混用Shell导航与传统导航

Shell.Current.GoToAsync和Navigation.PushAsync是两种不同的导航模式,混用会打乱Shell的UI状态。统一使用Shell导航:

// 移除PushAsync调用,仅保留Shell导航,添加//确保跳转到根路由
await Shell.Current.GoToAsync($"//{nameof(HomePage)}");

2. 在HomePage中强制恢复Flyout状态

在HomePage的OnAppearing方法中显式设置Shell的Flyout属性,确保导航后UI状态正确:

protected override void OnAppearing()
{
    base.OnAppearing();
    if (Shell.Current != null)
    {
        Shell.Current.FlyoutBehavior = FlyoutBehavior.Flyout;
        // 强制显示导航栏
        Shell.Current.NavigationBarVisibility = NavigationBarVisibility.Visible;
    }
}

3. 检查Shell路由注册

确认AppShell中已正确注册HomePage的路由,路由名称需与页面类名一致:

<!-- AppShell.xaml中注册路由 -->
<ShellContent Route="HomePage" ContentTemplate="{DataTemplate local:HomePage}" />

或者在代码后台注册:

// App.xaml.cs或AppShell.xaml.cs中
Routing.RegisterRoute(nameof(HomePage), typeof(HomePage));

4. 重置导航栈(针对栈混乱情况)

如果之前的导航操作导致栈异常,可先回到根页面再导航:

await Shell.Current.Navigation.PopToRootAsync();
await Shell.Current.GoToAsync(nameof(HomePage));

内容的提问来源于stack exchange,提问作者Chandra sekhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:07:11