Xamarin.forms 使用应用程序上下文初始化Xamrin表单对象是否存在任何问题

Xamarin.forms 使用应用程序上下文初始化Xamrin表单对象是否存在任何问题,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,我读过的所有指南都提到在创建活动的上下文中初始化Xamarin Forms对象,即 Forms.Init(context,bundle); 但是我更喜欢通过注册应用程序对象中的forms对象 Forms.Init(App.Context,null); 这样做有什么问题吗?来自: Forms是一个跨平台UI工具包,允许开发人员高效地创建本机用户界面布局,这些布局可以在iOS、Android和通用Windows平台应用程序之间共享 所以,Xamarin.Forms只是Xamarin.Andro

我读过的所有指南都提到在创建活动的上下文中初始化Xamarin Forms对象,即

Forms.Init(context,bundle); 
但是我更喜欢通过注册应用程序对象中的forms对象

Forms.Init(App.Context,null);
这样做有什么问题吗?

来自:

Forms是一个跨平台UI工具包,允许开发人员高效地创建本机用户界面布局,这些布局可以在iOS、Android和通用Windows平台应用程序之间共享

所以,Xamarin.Forms只是Xamarin.Android的第三部分库。如果要使用它,首先需要调用Forms.Init方法,然后调用LoadApplicationnew App;活动中的方法

您应该在调用LoadApplicationnew App;之前调用Forms.Init

应用程序实例是在应用程序启动时创建的,因此您可以将Forms.Init移动到应用程序的OnCreate方法,如下所示:

[Application]
public class MyApplication : Android.App.Application
{
    protected MyApplication(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
    {
    }

    public override void OnCreate()
    {
        base.OnCreate();
        Forms.Init(this, null);
    }
}
您可以阅读以了解为什么需要添加IntPtr、JniHandleOwnership构造函数


从代码表单.InitApp.Context,null;,我不知道什么是App.Context。也许你的意思是Android.App.Application.Context?

在VS创建的空白表单应用程序中,上述语句如下所示:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    ...

    base.OnCreate(bundle);

    global::Xamarin.Forms.Forms.Init(this, bundle);
    LoadApplication(new App());
}
方法中的bundle参数似乎未使用;另请注意以下评论:

// Provide backwards compat for Forms.Init and AndroidActivity
// Why is bundle a param if never used?
public static void Init(Context activity, Bundle bundle)
{
    ...