Получение исключения Java.Lang.IllegalArgumentException: только экземпляры TabItem могут быть добавлены в TabLayout в формах xamarin

Я получаю исключение

Java.Lang.IllegalArgumentException: Only TabItem instances can be added to TabLayout

Это мой код XAML

    <?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:pages="clr-namespace:RestaurantApp"
            x:Class="RestaurantApp.SearchTabbedPage">
  <!--Pages can be added as references or inline-->
    <TabbedPage.Children>
        <NavigationPage Title="VENDOR NAME">
            <x:Arguments>
                <pages:TabbedPageExampleTab1 />
            </x:Arguments>
        </NavigationPage>

        <NavigationPage Title="PRODUCT/SERVICE">
            <x:Arguments>
                <pages:TabbedPageExampleTab2 />
            </x:Arguments>
        </NavigationPage>
    </TabbedPage.Children>
</TabbedPage>

Это мой код за кодом

  namespace RestaurantApp
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class SearchTabbedPage : TabbedPage
    {
        public SearchTabbedPage ()
        {
            InitializeComponent();

        }
    }
}

Это код app.xaml.cs

 public App()
        {
            InitializeComponent();

            MainPage = new SearchTabbedPage();


            //};
        }

Это xaml-код TabbedPageExampleTab1

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="RestaurantApp.TabbedPageExampleTab1">
    <ContentPage.Content>
        <StackLayout>
            <Label Text="Hello. I am Judson" Margin="5" />


        <Label Text="You are on Tab one"></Label>

        <BoxView VerticalOptions="FillAndExpand" Color="Silver"></BoxView>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

Это код позади

[XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class TabbedPageExampleTab1 : ContentPage
    {
        public TabbedPageExampleTab1 ()
        {
            InitializeComponent ();
        }
    }

этот же код используется и для TabbedPageExampleTab2.

Мне нужен интерфейс

Я понятия не имею, почему я получаю это исключение. Какие-либо предложения. Это ссылка на диск Google для архивированного файла проекта

1 ответ

Решение

Используйте этот код, чтобы добавить страницу в TabbedPage

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:pages="clr-namespace:RestaurantApp"
            x:Class="RestaurantApp.SearchTabbedPage">
    <TabbedPage.Children>
        <NavigationPage Title="VENDOR NAME">
            <x:Arguments>
                <pages:TabbedPageExampleTab1 />
            </x:Arguments>
        </NavigationPage>

        <NavigationPage Title="Product/Service">
            <x:Arguments>
                <pages:TabbedPageExampleTab2 />
            </x:Arguments>
        </NavigationPage>
    </TabbedPage.Children>
</TabbedPage>

Ваш SearchTabbedPage должно быть пустым, значит, нет необходимости использовать эту строку

Children.Add(new TabbedPageExampleTab1());

Изменить: Ваш файл Tabbar.xaml должен выглядеть следующим образом

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/sliding_tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:tabIndicatorColor="@android:color/white"
    app:tabGravity="fill"
    app:tabMode="fixed">    
</android.support.design.widget.TabLayout>

Не добавлять TextView внутри него.

Другие вопросы по тегам