我有启动画面,当我运行我的应用程序时,它崩溃了。这是我的启动画面代码
如果我不使用启动画面应用程序,则可以正常运行,但是当我使用启动画面并关闭我的应用程序,并在启动画面后再次运行时崩溃。
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
var mainIntent = new Intent(Application.Context, typeof(MainActivity));
if (Intent.Extras != null)
{
mainIntent.PutExtras(Intent.Extras);
}
mainIntent.SetFlags(ActivityFlags.SingleTop);
StartActivity(mainIntent);
}
}
答案 0 :(得分:1)
我认为问题与您试图第二次启动已经开始的SingleTop
活动有关。
但是,建议写一些初始屏幕,而不需要单独的活动。有关Xamarin.Forms中启动屏幕实现的信息,请参见this nice blog post by Adam Pedley。
除了具有单独的活动外,您还可以在加载活动之前将“闪屏”主题临时应用于主活动。这很有用,因为它使您的应用程序加载起来比进行单独的初始屏幕活动更快。
在Resources/values/styles.xml
中创建样式:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="splashscreen" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splashscreen</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<resources>
通过属性将此主题设置为MainActivity
:
[Activity(Label = "Mobile App",
Theme = "@style/splashscreen",
Icon = "@drawable/icon",
MainLauncher = true,
ConfigurationChanges = ConfigChanges.ScreenSize |
ConfigChanges.Orientation,
LaunchMode = LaunchMode.SingleTop)]
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
然后重写OnCreate
方法以将实际主题设置回:
protected override void OnCreate(Bundle bundle)
{
base.Window.RequestFeature(WindowFeatures.ActionBar);
// For global use "global::" prefix - global::Android.Resource.Style.ThemeHoloLight
base.SetTheme(Resource.Style.MainTheme);
base.OnCreate(bundle);
...
}