具有动态启动画面的Xamarin表单

时间:2018-10-16 16:11:24

标签: android xamarin.forms

我正在尝试创建Xamarin Forms应用程序以在Android和iOS上运行。该应用程序本身是在首次运行时针对特定客户定制的,因此会下载自定义启动屏幕和其他特定于客户的数据。

我通过添加新的SplashActivity并将其设置为MainLauncher来遵循一些有关在Android中创建启动屏幕的建议。此活动源自“活动”,如下所示:

公共类SplashActivity:活动     {         受保护的重写void OnCreate(捆绑包)         {             base.OnCreate(bundle);

        // Set our view 
        SetContentView(Resource.Layout.splash);

        // Initialise Xamarin Essentials
        Xamarin.Essentials.Platform.Init(this, bundle);
        Xamarin.Forms.Forms.Init(this, bundle);

        // If we have a splash screen already downloaded then we can try and load that here otherwise we use the default image.
        try
        {
            string splashScreen = SharedPreferences.Splash();
            if (string.IsNullOrEmpty(splashScreen) || !File.Exists(splashScreen))
            {
                var iv = FindViewById<ImageView>(Resource.Id.ivSplash);
                iv.SetImageResource(Resource.Drawable.splash);
            }
            else
            {
                var bitmap = BitmapFactory.DecodeFile(splashScreen);
                var bitmapDrawable = new BitmapDrawable(bitmap);
                FindViewById<ImageView>(Resource.Id.ivSplash).SetImageDrawable(bitmapDrawable);
            }
        }
        catch (Exception ex)
        {
            FindViewById<ImageView>(Resource.Id.ivSplash).SetImageResource(Resource.Drawable.splash);
        }

        // Set a timer to continue
        var timer = new Timer(2000) {AutoReset = false};
        timer.Elapsed += timer_Elapsed;
        timer.Start();
    }

当计时器触发时,它将调用原始的MainActivity

public class MainActivity : FormsAppCompatActivityBase
{
    protected override void OnCreate(Bundle bundle)
    {
        LoadApplication(new MainApp());
    }
}

我的问题是,当我调用LoadApplication时,应用程序崩溃并出现空引用异常。我已经在MainApp.xaml.cs中设置了断点(因为这在可移植代码中),并且一切似乎都可以正确运行。在添加初始屏幕之前,它可以正常工作,因此我认为是由于这一原因。

0 个答案:

没有答案