Xamarin.forms 使用应用程序上下文初始化Xamrin表单对象是否存在任何问题
我读过的所有指南都提到在创建活动的上下文中初始化Xamarin Forms对象,即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
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)
{
...