Android заставка для проекта UNO UWP
Я пытаюсь реализовать заставку для Android-части моего решения UNO. Я могу заставить заставку появляться, подождать несколько секунд, но при переходе на главную страницу я получаю следующее исключение в app.cs
protected override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { // this.DebugSettings.EnableFrameRateCounter = true; } #endif Frame rootFrame = Windows.UI.Xaml.Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); <<<<< exception
Необработанное исключение: Java.Lang.NullPointerException: произошла попытка вызвать виртуальный метод 'android.content.res.Resources android.content.Context.getResources()' для ссылки на пустой объект
Трассировка стека так же проста, как:
0x25 в Uno1.App.On Запускается в C:\Users\pjsta\Documents\Visual Studio 2017\Projects\Uno1\Uno1\Uno1.Shared\App.xaml.cs:55,17 C#
Соответствующая часть решения: 1. мой новый SplashActivity в проекте Android
[Activity(Label = "SplashScreen", MainLauncher = true, Theme = "@style/Theme.SplashActivity")]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
System.Threading.Thread.Sleep(1000);
StartActivity(typeof(MainActivity));
}
}
Модификация MainActivity, чтобы не быть MainLauncher
[Activity (MainLauncher = false, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize, WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden)]
открытый класс MainActivity: Windows.UI.Xaml.ApplicationActivity { }
Соответствующий стиль загружается для заставки ОК. Переключение MainActivity обратно на MainLauncher=true работает, хотя и без заставки. Я новичок в разработке Xamarin и Android, но компетентен в UWP. У кого-нибудь есть идеи?
1 ответ
За исключением, это звучит как когда new Frame()
называется, базовый собственный конструктор вызывается с нулевым контекстом. Это, вероятно, потому что Uno ожидает ApplicationActivity
запускаться как MainLauncher = true. Возможно, что наследование вашего SplashActivity
класс от Uno.UI.BaseActivity
может устранить ошибку.
Лучший способ показать заставку на Android - это изменить тему, а не создавать отдельное действие. Я буду использовать приложение Uno Gallery в качестве примера.
Создайте файл в папке Resources / drawable на вашей голове Android, например, splash.xml. Определите свой внешний вид заставки здесь.
Откройте файл Resources / values / Styles.xml. Внутри стиля AppTheme добавьте следующую строку:
<item name="android:windowBackground">@drawable/splash</item>
Надеюсь, это поможет. Также, пожалуйста, пометьте вопросы о платформе Uno как "uno-platform" (тег "uno" относится к компонентной модели OpenOffice).