Получение исключения 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
внутри него.