Xamarin.Forms 基础——App Class
来源:互联网 发布:大逃杀游戏知乎 编辑:程序博客网 时间:2024/06/05 21:01
应用程序类
默认App类的功能,可以是C#或XAML
- PDF用于离线使用
- 下载PDF
让我们知道你对此的感受
最后更新:2016年2月
该Application
基类提供了以下功能,这是在项目的默认露App
子类:
- 一个
MainPage
属性,它是设置应用程序初始页面的位置。 - 一个持久性
Properties
字典,用于在生命周期状态更改中存储简单值。 Current
包含对当前应用程序对象的引用的静态属性。
如果还自曝生命周期方法,如OnStart
,OnSleep
和OnResume
以及模式导航事件。
根据您选择的模板,App
可以通过以下两种方式之一定义该类:
- C#,或
- XAML&C#
要使用XAML 创建一个App类,默认的App类必须被替换为XAML App类和相关的代码隐藏,如下面的代码示例所示:
<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Photos.App"></Application>
以下代码示例显示了相关的代码隐藏:
public partial class App : Application{ public App () { InitializeComponent (); MainPage = new HomePage (); } ...}
除了设置MainPage
属性之外,代码隐藏也必须调用该InitializeComponent
方法来加载和解析关联的XAML。
MainPage属性
在MainPage
对房地产Application
类设置应用程序的根页面。
例如,您可以在App
类中创建逻辑,以根据用户是否登录来显示不同的页面。
该MainPage
属性应该在App
构造函数中设置,
public class App : Xamarin.Forms.Application{ public App () { MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here }}
属性词典
的Application
子类具有静态Properties
可用于存储数据,特别是用于在使用词典OnStart
,OnSleep
和OnResume
方法。这可以从您在Xamarin.Forms代码中使用的任何地方访问Application.Current.Properties
。
该Properties
词典使用string
键和存储的object
值。
例如,您可以"id"
在代码中的任何位置(选择项目,页面OnDisappearing
方法或OnSleep
方法中)设置一个持久性属性,如下所示:
Application.Current.Properties ["id"] = someClass.ID;
在OnStart
或OnResume
方法中,您可以使用此值以某种方式重新创建用户的体验。该Properties
字典中存储object
如此的,你需要使用它之前投它的价值。
if (Application.Current.Properties.ContainsKey("id")){ var id = Application.Current.Properties ["id"] as int; // do something with id}
在访问密钥之前,请始终检查密钥的存在以防止出现意外错误。
Properties
词典只能序列化基本类型进行存储。尝试存储其他类型(如 List<string>
可以静默地失败。坚持
该Properties
词典是自动保存到设备。当应用程序从后台返回,甚至在重新启动后,添加到字典中的数据将可用。
Xamarin.Forms 1.4在Application
类 上引入了一个额外的方法SavePropertiesAsync()
- 可以调用它来主动保留Properties
字典。这是为了允许您在重要更新后保存属性,而不是由于崩溃或操作系统被杀死而无法序列化。
你可以找到参考使用Properties
字典中 与Xamarin.Forms创建移动应用书籍章节6, 15,和20,以及相关的 样品。
应用程序类
完整的Application
类实现如下所示:
public class App : Xamarin.Forms.Application{ public App () { MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here } protected override void OnStart() { // Handle when your app starts Debug.WriteLine ("OnStart"); } protected override void OnSleep() { // Handle when your app sleeps Debug.WriteLine ("OnSleep"); } protected override void OnResume() { // Handle when your app resumes Debug.WriteLine ("OnResume"); }}
该类然后在每个特定于平台的项目实例化并传递到 LoadApplication
它是其中该方法MainPage
被加载并显示给用户。以下各节显示每个平台的代码。最新的Xamarin.Forms解决方案模板已包含所有这些代码,为您的应用程序预配置。
iOS项目
iOS AppDelegate
类现在继承FormsApplicationDelegate
。这应该:
调用类
LoadApplication
的实例App
。总是返回
base.FinishedLaunching (app, options);
。
[Register ("AppDelegate")]public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate // superclass new in 1.3{ public override bool FinishedLaunching (UIApplication app, NSDictionary options) { global::Xamarin.Forms.Forms.Init (); LoadApplication (new App ()); // method is new in 1.3 return base.FinishedLaunching (app, options); }}
Android项目
Android MainActivity
现在继承了FormsApplicationActivity
。在OnCreate
覆盖中,该LoadApplication
方法使用App
类的实例调用。
[Activity (Label = "App Lifecycle Sample", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity // superclass new in 1.3{ protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); global::Xamarin.Forms.Forms.Init (this, bundle); LoadApplication (new App ()); // method is new in 1.3 }}
FormsAppCompatActivity
基类可用于更好地支持Android Material Design。这将成为未来的默认Android模板,但您可以按照 这些说明 更新现有的Android应用程序。Windows Phone项目
Windows Phone(Silverlight)项目中的主页应该继承FormsApplicationPage
。这意味着XAML和C#用于MainPage
引用FormsApplicationPage
所示的类。
XAML使用自定义命名空间,以便根元素反映FormsApplicationPage
类:
<winPhone:FormsApplicationPage ... xmlns:winPhone="clr-namespace:Xamarin.Forms.Platform.WinPhone;assembly=Xamarin.Forms.Platform.WP8" ...></winPhone:FormsApplicationPage>
C#从FormsApplicationPage
类继承,并调用LoadApplication
创建一个Xamarin.Forms的实例App
。请注意,明确使用应用程序命名空间来限定App
Windows Phone应用程序也具有App
与Xamarin.Forms无关的类,这是很好的做法。
public partial class MainPage : global::Xamarin.Forms.Platform.WinPhone.FormsApplicationPage // superclass new in 1.3{ public MainPage() { InitializeComponent(); SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape; global::Xamarin.Forms.Forms.Init(); LoadApplication(new YOUR_APP_NAMESPACE.App()); // new in 1.3, use the correct namespace } }
Windows 8.1项目
Windows 8.1(WinRT) 项目中的主页现在应该继承 WindowsPage
。这意味着XAML用于MainPage
引用WindowsPage
类,如下所示:
XAML使用自定义命名空间,以便根元素反映FormsApplicationPage
类:
<forms:WindowsPage ... xmlns:forms="using:Xamarin.Forms.Platform.WinRT" ...></forms:WindowsPage>
C#codebehind的构造必须调用LoadApplication
来创建一个Xamarin.Forms的实例App
。请注意,明确使用应用程序命名空间来限定这一点是很好的做法,App
因为UWP应用程序也有自己的App
与Xamarin.Forms无关的类。
public partial class MainPage{ public MainPage() { InitializeComponent(); LoadApplication(new YOUR_APP_NAMESPACE.App()); } }
请注意,Forms.Init()
必须在第65行的App.xaml.cs中调用它。
Windows 10的通用Windows项目(UWP)
XAMarin.Forms中的通用Windows项目支持目前在“预览”中。
UWP项目的主页应该继承WindowsPage
。这意味着XAML和C#用于MainPage
引用FormsApplicationPage
所示的类。
XAML使用自定义命名空间,以便根元素反映FormsApplicationPage
类:
<forms:WindowsPage ... xmlns:forms="using:Xamarin.Forms.Platform.UWP" ...></forms:WindowsPage>
C#codebehind的构造必须调用LoadApplication
来创建一个Xamarin.Forms的实例App
。请注意,明确使用应用程序命名空间来限定这一点是很好的做法,App
因为UWP应用程序也有自己的App
与Xamarin.Forms无关的类。
public sealed partial class MainPage{ public MainPage() { InitializeComponent(); LoadApplication(new YOUR_NAMESPACE.App()); } }
请注意,Forms.Init()
必须在第63行周围的App.xaml.cs中调用它。
- Xamarin.Forms 基础——App Class
- Xamarin.Forms 基础——Application基础
- Xamarin.Forms 基础——应用程序生命周期
- Xamarin.Forms 基础——Behavior+EffectBehavior
- Xamarin.Forms 基础——Behavior——EventToCommandBehavior
- Xmarin.Forms 基础——Behaviors——Xamarin.Forms Behaviors
- Xamarin.Forms开发天气预报app
- Xamarin.Forms 用户界面——动画
- Xamarin.Forms 用户界面——颜色
- Xamarin.Forms 用户界面——控件
- Xamarin.Forms——上传图片
- Xamarin.Forms 用户界面——动画——简单动画
- Xamarin.Forms 用户界面——动画——放松功能
- Xamarin.Forms 用户界面——动画——自定义动画
- Xamarin.Forms 用户界面——控件——页面
- Xamarin.Forms 用户界面——控件——布局
- Xamarin.Forms 用户界面——控件——View
- Xamarin.Forms 用户界面——控件——Cells
- vue报错 vue Cannot read property ‘ob’ of undefined
- fork与vfork的区别
- ThreadLocal理解
- 【题解】2014 螺旋矩阵(P2239)
- linux如何迁移目录?
- Xamarin.Forms 基础——App Class
- c++导出类的简单实现
- java 图片合成
- springCloud(四)
- 特征选择
- 1037. 在霍格沃茨找零钱(20)
- luogu 3907 :Trie 树板子(dalao勿看,水的辣眼睛)
- [数据库与SQL]
- java语言的自增++和自减--