Xamarin.Forms:启动活动后应用崩溃

时间:2019-01-08 09:40:55

标签: xamarin.forms

我有启动画面,当我运行我的应用程序时,它崩溃了。这是我的启动画面代码

如果我不使用启动画面应用程序,则可以正常运行,但是当我使用启动画面并关闭我的应用程序,并在启动画面后再次运行时崩溃。

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);
    }
}

1 个答案:

答案 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);

    ...
}