MAUI Tabbed Page从其他页面调用时Android端崩溃问题
MAUI Android启动崩溃:“fragment viewid not found” 解决方案
问题背景
主页面是包含跳转按钮的ContentPage,点击按钮打开TabbedPage。代码在Windows平台运行正常,但Android平台启动时崩溃,报错“fragment viewid not found”。
错误原因
- 主页面XAML语法错误:主页面XAML末尾
</ContentPage>标签前存在多余的ed字符,破坏了XAML结构完整性。Android对XAML语法校验更严格,这类错误会导致页面解析失败,进而引发fragment相关崩溃。 - 冗余属性(非直接崩溃原因):TabbedPage中设置了
x:DataType="local:SecondPage"但未使用任何绑定逻辑,虽不直接导致崩溃,但会产生不必要的绑定警告,建议清理。
修复步骤
- 移除主页面XAML中
</ContentPage>前的多余ed字符,确保XAML结构完整。 - (可选)移除TabbedPage中未使用的
x:DataType属性,避免不必要警告。
修复后代码示例
主页面(MainPage.xaml)
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="TabbedMaui.MainPage" xmlns:local="clr-namespace:TabbedMaui" > <Button Text="Go" Clicked="Button_Clicked"></Button> </ContentPage>
第二页面(SecondPage.xaml)
<?xml version="1.0" encoding="utf-8" ?> <TabbedPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="TabbedMaui.SecondPage" xmlns:local="clr-namespace:TabbedMaui" Title="Some title" BackgroundColor="blue"> <ContentPage Title="Page 1" BackgroundColor="Red"> <VerticalStackLayout > <Label Text="Hello"></Label> </VerticalStackLayout> </ContentPage> <ContentPage Title="Page 2" BackgroundColor="Yellow"></ContentPage> <ContentPage Title="Page 3"></ContentPage> </TabbedPage>
补充说明
Android平台对XAML语法正确性要求高于Windows,任何语法错误(如多余字符、未闭合标签)都会导致页面解析失败,触发fragment相关崩溃。确保XAML结构完整、语法无误是解决这类问题的核心。
内容的提问来源于stack exchange,提问作者Brenden Jacobson
相关产品推荐
相关产品推荐

