我正在尝试为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/