彩票走势图

Xamarin使用教程三:DatePickerDialog的使用技巧

转帖|使用教程|编辑:我只采一朵|2014-07-23 11:28:49.000|阅读 1848 次

概述:本文介绍在Xamarin中使用DatePickerDialog的一些技巧。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Xamarin 中在使用Datepicker的时候,一般情况下只需要在对应的按钮或其他控件的点击事件中使用如下语句即可完成:

EditText etBirthday = FindViewById<EditText> (Resource.Id.userBirthday);
etBirthday.Click += delegate(object sender, EventArgs e) {
    new DatePickerDialog (this, OnDatePickerSelect, DateTime.Today.Year, DateTime.Today.Month - 1, DateTime.Today.Day).Show();
};

void OnDatePickerSelect(object sender, DatePickerDialog.DateSetEventArgs e)
{
    RunOnUiThread(() =>
    {
        //日期选择之后的操作方法
        Log.Debug(e.Date.ToString("yyyy-MM-dd"));
    });
}

但在使用到ActivityGroup时,则可能出现如下错误提示:

Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@4159dd40 is not valid; is your activity running? 

这是因为在使用ActivityGroup的时候是使用到Activity嵌套,使用this获取的不是当前Activity,所以需要将代码修改为如下代码:

EditText etBirthday = FindViewById<EditText> (Resource.Id.userBirthday);
etBirthday.Click += delegate(object sender, EventArgs e) {
    new DatePickerDialog (Parent, OnDatePickerSelect, DateTime.Today.Year, DateTime.Today.Month - 1, DateTime.Today.Day).Show();
};

void OnDatePickerSelect(object sender, DatePickerDialog.DateSetEventArgs e)
{
    RunOnUiThread(() =>
    {
        //日期选择之后的操作方法
        Log.Debug(e.Date.ToString("yyyy-MM-dd"));
    });
}

如上代码中红色标注,需要将this修改为Parent,以此获取当前Activity,如使用到多层嵌套,则使用多个Parent。


标签:移动开发Xamarin

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP