我正在尝试为我的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。外面有人有什么主意吗?
答案 0 :(得分:1)
从异常来看,听起来像是在调用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组件模型)。