Android заставка для проекта UNO UWP - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь реализовать заставку для 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.OnLunched на 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));
        }
    }
  1. Модификация MainActivity, чтобы не быть MainLauncher

    [Активность ( MainLauncher = false, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize, WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden)]

    открытый класс MainActivity: Windows.UI.Xaml.ApplicationActivity { }

Соответствующий стиль загружается для заставки ОК. Переключение MainActivity обратно на MainLauncher = true работает, хотя и без заставки. Я новичок в разработке Xamarin и Android, но компетентен в UWP. У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 29 августа 2018

Исключением является то, что при вызове new Frame() базовый собственный конструктор вызывается с нулевым контекстом. Вероятно, это связано с тем, что Uno ожидает, что ApplicationActivity будет запущен как MainLauncher = true. Возможно, что наследование класса SplashActivity от Uno.UI.BaseActivity может устранить ошибку.

Лучший способ показать заставку на Android - это изменить тему, а не создавать отдельное действие. Я буду использовать приложение Uno Gallery в качестве примера .

  1. Создайте файл в папке Resources / drawable на вашей голове Android, например, splash.xml . Определите свой внешний вид заставки здесь.

  2. Откройте файл Resources / values ​​/ Styles.xml . Внутри стиля AppTheme добавьте следующую строку:

    <item name="android:windowBackground">@drawable/splash</item>
    

Надеюсь, это поможет. Также отметьте вопросы о Uno Platform как «uno-platform» (тег «uno» относится к модели компонентов OpenOffice).

...