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

.NET MAUI返回主页时出现空引用错误的技术咨询

.NET MAUI 返回主页空引用错误解决方案

核心问题分析

你的TabbedPageMenu是Shell子类,MAUI中Shell作为主页面时不能用NavigationPage包裹,同时你混合了模态导航(PushModalAsync)与传统导航栈操作,导致导航栈混乱,进而引发空引用错误。

具体修复步骤

1. 修正主页面设置逻辑

移除NavigationPage包裹,直接将Shell实例设为主页面:

  • 登录按钮代码(LoginPage):
private async void BtnLogin_Clicked(object sender, EventArgs e)
{
    App.Current.MainPage = new TabbedPageMenu();
}
  • 返回主页按钮代码:
private async void BtnBack_Clicked(object sender, EventArgs e)
{
    App.Current.MainPage = new TabbedPageMenu();
}

2. 规范模态页面返回操作

你通过PushModalAsync打开的页面,必须用PopModalAsync关闭。如果要直接回到主页,需清空所有模态栈:

private async void BtnBack_Clicked(object sender, EventArgs e)
{
    // 逐层关闭所有模态页面,回到主页面
    while (Navigation.ModalStack.Count > 0)
    {
        await Navigation.PopModalAsync();
    }
}

3. 改用Shell原生导航(推荐)

Shell提供了更规范的导航机制,避免栈混乱:

注册路由(App.xaml.cs)

public App()
{
    InitializeComponent();
    // 注册页面路由
    Routing.RegisterRoute(nameof(ExeTreinoPage), typeof(ExeTreinoPage));
    Routing.RegisterRoute(nameof(ParabensPage), typeof(ParabensPage));
    // 直接设置Shell为主页面
    MainPage = new TabbedPageMenu();
}

打开页面(TreinosPage)

private async void CvParcelamento_SelectionChanged(object sender, TappedEventArgs e)
{
    var btn = (Frame)sender;
    var item = (Parcelamento)btn.BindingContext;
    if (item == null) return;
    Preferences.Set("Parcelamento", item.ParcelamentoId.ToString());
    // 使用Shell导航打开页面
    await Shell.Current.GoToAsync(nameof(ExeTreinoPage));
}

返回主页(ParabensPage)

private async void BtnBack_Clicked(object sender, EventArgs e)
{
    // 直接回到Shell根页面
    await Shell.Current.GoToAsync("//");
}

4. 修复潜在空引用点

在TreinosPage中,先判断item不为空再设置Preferences,避免空引用:

private async void CvParcelamento_SelectionChanged(object sender, TappedEventArgs e)
{
    var btn = (Frame)sender;
    var item = (Parcelamento)btn.BindingContext;
    if (item == null) return;
    Preferences.Set("Parcelamento", item.ParcelamentoId.ToString());
    // 导航逻辑...
}

内容的提问来源于stack exchange,提问作者Wesley Henrique dos Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:28:13