TabbedPage在启动时使应用程序崩溃。其他人不

时间:2018-10-14 01:04:14

标签: xaml xamarin xamarin.forms

我今晚遇到了这个问题,经过数小时的头脑风暴,我想我会问。请参考以下代码:

App.xaml.cs

            MainPage = new NavigationPage(new MainPage());
//            MainPage = new NavigationPage(new ActivitiesPage());

以上代码由于某种原因未运行。我已经使用下面的注释代码进行了测试,所有功能均按其应有的方式运行。有人知道原因吗?这两个xaml类(MainPage和ActivitiesPage)的代码如下。 MainPage

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Instagram_App.View.MainPage"
            xmlns:view="clr-namespace:Instagram_App.View;assembly=Instagram_App">
    <view:ActivitiesPage Title="Activities" Icon="heart.png"/>
    <view:ProfilePage Title="Profile"  Icon="user.png"/>
</TabbedPage>

活动页面

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Instagram_App.View.ActivitiesPage">
    <ContentPage.Content>
        <ListView x:Name="listView" ItemSelected="ListView_OnItemSelected" HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal" HorizontalOptions="StartAndExpand">
                            <Image Source="{Binding ImageUrl}" />
                            <Label Text="{Binding Description}"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ContentPage.Content>
</ContentPage>

我已经逐步检查了代码,看看会发生什么,并且似乎当编译器进入OnStart()时会崩溃。请帮忙,谢谢!

2 个答案:

答案 0 :(得分:0)

TabbedPage应该是您应用的根目录(MainPage),而不应包含在NavigationPage中。但是,TabbedPage中的每个标签都可以包含NavigationPage

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:local="clr-namespace:TabbedPageWithNavigationPage;assembly=TabbedPageWithNavigationPage"
            x:Class="TabbedPageWithNavigationPage.MainPage">
    <local:TodayPage />
    <NavigationPage Title="Schedule" Icon="schedule.png">
        <x:Arguments>
            <local:SchedulePage />
        </x:Arguments>
    </NavigationPage>
</TabbedPage>

答案 1 :(得分:0)

根据您的代码, 您的MainPage应该设置为TabbedPage和您的应用程序的根目录。 因此,您的代码App.xaml.cs

MainPage = new MainPage();

可以。 如果希望将包含导航页的选项卡选项卡包含到TabbedPage,则可以使用上次响应者的答案:

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        xmlns:local="clr-namespace:TabbedPageWithNavigationPage;assembly=TabbedPageWithNavigationPage"
        x:Class="TabbedPageWithNavigationPage.MainPage">
<local:TodayPage />
<NavigationPage Title="Schedule" Icon="schedule.png">
    <x:Arguments>
        <local:SchedulePage />
    </x:Arguments>
</NavigationPage>

并且,如果有疑问,可以参考官方文档: TabbedPage use and demo