HTML5技术

是时候开始用C#快速开发移动应用了 - 腾飞(Jesse)(2)

字号+ 作者:H5之家 来源:H5之家 2017-06-08 16:01 我要评论( )

OnCreate(Bundle bundle){ base .OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); var btnSelectDate = FindViewByIdButton (Resource.Id.btnDateSelec

OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); var btnSelectDate = FindViewById<Button>(Resource.Id.btnDateSelector); // 事件绑定匿名函数 btnSelectDate.Click += (o, e) => { var dialog = Fragments.DatePickerFragment.NewInstance(); dialog.OnDateSelected += Dialog_OnDateSelected; // 事件绑定另一个方法 dialog.Show(FragmentManager, ); }; } private void Dialog_OnDateSelected(DateTime dt) { var txtDate = FindViewById<TextView>(Resource.Id.txtDate); txtDate.Text = dt.ToLongDateString(); }

在上面的代码中我们找到了 btnSelectDate的代码,然后绑定了它的Click事件来打开一个选择日期的Dialog。这里的事件处理我们用的是一个匿名方法。

而在这个Dialog的OnDateSelected事件我们则绑定了一个声明方法。注:OnDateSelected这个事件是我们自己声明的,而这个声明方法,相信大家不会觉得陌生。

DatePickerFragment.cs中用委托来声明事件,当然你也可以用传递Action的方式来解决。

DateSelectedHandle(DateTime dt); public event DateSelectedHandle OnDateSelected; public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { var selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth); if (OnDateSelected != null) { OnDateSelected(selectedDate); } }

这就是100%的C#代码。

Activity 之间数据传递

  Android中Layout与Activity大家可以理解为webform中的.aspx页面与.aspx.cs code behind。 只是在Activity中我们还需要手动通过FindViewById来找到这个UI组件。如果Activity代表了一整个View,那我们来看看在不同的View之间如何传递数据。

var context = view.Context; intent = new Intent(context, typeof(CheeseDetailActivity)); // 将数据Put到Extra中即可 EXTRA_NAME为这个数据的key intent.PutExtra(CheeseDetailActivity.EXTRA_NAME, values[position]); context.StartActivity(intent);

在CheeseDetailActivity中,只需要通过Intent.GetStringExtra(); 来获取即可

string cheeseName = Intent.GetStringExtra(EXTRA_NAME);

多线程

其实这里的多线程本不需要被提起,我只是为了向大家展示一下,这种线程处理也是100%C#来写。毕竟,越小的差异对于我们来说学习成本就越小。只是这里要注意一下,如果在非主线程中要操作UI,则需要调用RunOnUiThread(这名字起的也是好。。)

void signUpDialog_mOnSignUpComplete(object sender, OnSignUpEventArgs e) { mProgressBar.Visibility = ViewStates.Visible; Task.Run(() => { Thread.Sleep(3000); RunOnUiThread(() => { mProgressBar.Visibility = ViewStates.Invisible; }); }); }

小结 

   在这个盛行全干的时代,我想每个人都应该懂移动端开发。Xamarin为我们提供了一种简单、高效的方式来开发强大的、如原生般体验的APP。结合C#优雅的语法和宇宙最强大的IDE,这个事情也许值得一试。

      

      你还可以扫描下面的二维码通过微信来看这篇文章。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • .net 企业管理系统快速搭建框架 - 请求

    .net 企业管理系统快速搭建框架 - 请求

    2017-05-22 18:06

  • C#单元测试,带你快速入门 - 农码一生

    C#单元测试,带你快速入门 - 农码一生

    2017-05-18 16:00

  • 微软 Build 2017 开发者大会:Azure 与 AI 的快速发展 - 葡萄城控件技术团队

    微软 Build 2017 开发者大会:Azure 与 AI 的快速发展 - 葡萄城控件

    2017-05-13 13:01

  • 从零开始构建一个的asp.net Core 项目(一) - 你好世界_qu

    从零开始构建一个的asp.net Core 项目(一) - 你好世界_qu

    2017-05-07 10:29

网友点评
-