我正在尝试为UNO解决方案的Android部分实现启动屏幕。我可以启动屏幕出现,请等待几秒钟,但是导航到主页后,在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()'

堆栈跟踪非常简单:


  Uno1.App.On中的0x25在C:\ Users \ pjsta \ Documents \ Visual Studio 2017 \ Projects \ Uno1 \ Uno1 \ Uno1.Shared \ App.xaml.cs:55,17 C#中启动


解决方案的相关部分是
1.我在Android项目中的新SplashActivity

 [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

[活动(
MainLauncher = false,
ConfigurationChanges = ConfigChanges.Orientation |
ConfigChanges.ScreenSize,
WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden)]

公共类MainActivity:Windows.UI.Xaml.ApplicationActivity
{
}


初始屏幕上的相关样式加载成功。将MainActivity切换回MainLauncher = true可以,尽管没有启动屏幕。
我是Xamarin和Android开发的新手,但是胜任UWP。有人有什么想法吗?

最佳答案

从异常来看,听起来像是在调用new Frame()时,使用空Context调用了基本本机构造函数。这可能是因为Uno期望ApplicationActivity作为MainLauncher = true运行。从SplashActivity继承Uno.UI.BaseActivity类很可能可以解决该错误。

在Android上显示启动画面的更好方法是修改主题,而不是创建单独的活动。我将Uno Gallery app用作example


在您的Android头的Resources / drawable文件夹中创建一个文件,例如splash.xml。在此处定义启动屏幕的视觉外观。
打开Resources/values/Styles.xml文件。在“ AppTheme”样式内,添加以下行:

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



希望能有所帮助。另外,请将有关Uno Platform的问题标记为“ uno-platform”(“ uno”标记是指OpenOffice组件模型)。

关于android - 适用于UNO UWP项目的Android启动画面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52064483/

10-10 03:38