Странная ошибка запуска в портированном приложении dotnet 9 Maui для AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Странная ошибка запуска в портированном приложении dotnet 9 Maui для Android

Сообщение Anonymous »

Я перенес приложение Xamarin Forms для Android на Мауи (.net 9), и в основном оно работает хорошо. Должен признать, что это оказалось проще, чем я ожидал. Приложение XF загружает страницы, устанавливая MainPage, и приложение управляет собственным стеком страниц. Я пытаюсь переместить приложение Maui в навигацию Shell, но наталкиваюсь на препятствие.
Приложение начинается с заставки, экземпляр которой создается в App ctor (App.xaml.cs), вот так

Код: Выделить всё

`MainPage = new SplashPage();`
Существует также модель представления SplashPageViewModel, определенная в SplashPage.xaml следующим образом: Когда я закомментирую строку кода MainPage = new SplashPage() в App.xaml.cs и переопределяю CreateWindow следующим образом:

Код: Выделить всё

protected override Window CreateWindow(IActivationState? activationState)
{
return new Window(new AppShell());
}

и создайте AppShell.xaml вот так: Я получаю эту ошибку во время запуска во «внешнем коде»:
System.InvalidOperationException
Message=Невозможно создать экземпляры абстрактных классов.
С этой трассировкой стека:

Код: Выделить всё

        0xFFFFFFFFFFFFFFFF in Android.Runtime.RuntimeNativeMethods.monodroid_debugger_unhandled_exception   C#
0x1A in Android.Runtime.JNINativeWrapper._unhandled_exception at /Users/runner/work/1/s/Xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:12,5 C#
0x23 in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPLLL_L at /Users/runner/work/1/s/Xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:364,26    C#
0x20 in Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance  C#
0x68 in Microsoft.Maui.Controls.ShellContent. at /_/src/Controls/src/Core/Shell/ShellContent.cs:87,7    C#
0x27 in Microsoft.Maui.Controls.ElementTemplate.CreateContent at /_/src/Controls/src/Core/ElementTemplate.cs:87,4   C#
0x8 in Microsoft.Maui.Controls.Internals.DataTemplateExtensions.CreateContent at /_/src/Controls/src/Core/DataTemplateExtensions.cs:23,4    C#
0x71 in Microsoft.Maui.Controls.ShellContent.Microsoft.Maui.Controls.IShellContentController.GetOrCreateContent at /_/src/Controls/src/Core/Shell/ShellContent.cs:91,5  C#
0x16E in Microsoft.Maui.Controls.Platform.Compatibility.ShellSectionRenderer.OnCreateView at /_/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellSectionRenderer.cs:124,5    C#
0x24 in AndroidX.Fragment.App.Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ at C:\a\_work\1\s\generated\androidx.fragment.fragment\obj\Release\net8.0-android\generated\src\AndroidX.Fragment.App.Fragment.cs:2045,4 C#
0xD in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPLLL_L at /Users/runner/work/1/s/Xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:363,5  C#
Наверное, мне не хватает чего-то базового... то, что я делаю, кажется, следует той же схеме запуска, что и новое приложение Мауи, которое ничего не делает, но что-то явно не так. Если кто-нибудь сможет указать мне правильное направление, я буду признателен.

== UPDATE ==
Проблема решена!
Проблема была в AppShell.xaml. Проблема исчезла, когда я изменил DataTemplate с MauiProgram на SplashPage, вот так: в Проблема всегда присутствовала в оригинале, но она имела значение только тогда (то есть, код не выполнялся до тех пор, пока) я переключился с навигации по странице, установив MainPage, на навигацию, переопределив CreateWindow и создав экземпляр AppShell.
Спасибо!>
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»