zoukankan      html  css  js  c++  java
  • Xamarin中使用DatePickerDialog的相关问题

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

     1 EditText etBirthday = FindViewById<EditText> (Resource.Id.userBirthday);
     2 etBirthday.Click += delegate(object sender, EventArgs e) {
     3     new DatePickerDialog (this, OnDatePickerSelect, DateTime.Today.Year, DateTime.Today.Month - 1, DateTime.Today.Day).Show();
     4 };
     5 
     6 void OnDatePickerSelect(object sender, DatePickerDialog.DateSetEventArgs e)
     7 {
     8     RunOnUiThread(() =>
     9     {
    10         //日期选择之后的操作方法
    11         Log.Debug(e.Date.ToString("yyyy-MM-dd"));
    12     });
    13 }

    但在使用到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,所以需要将代码修改为如下代码:

     1 EditText etBirthday = FindViewById<EditText> (Resource.Id.userBirthday);
     2 etBirthday.Click += delegate(object sender, EventArgs e) {
     3     new DatePickerDialog (Parent, OnDatePickerSelect, DateTime.Today.Year, DateTime.Today.Month - 1, DateTime.Today.Day).Show();
     4 };
     5 
     6 void OnDatePickerSelect(object sender, DatePickerDialog.DateSetEventArgs e)
     7 {
     8     RunOnUiThread(() =>
     9     {
    10         //日期选择之后的操作方法
    11         Log.Debug(e.Date.ToString("yyyy-MM-dd"));
    12     });
    13 }

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

  • 相关阅读:
    JS 获取鼠标位置
    Asp 2.0动态加载用户控件(Ascx)
    水晶报表学习之三(参数传递问题)
    C#中分割字符串的几种方法
    StringUtils类使用
    页面自动刷新,HTML代码,呵呵,可以去刷新人气拉!
    水晶报表预览时有线条,打印的时候无线条,这个该怎么处理?
    Online、Interline的意思。
    linux下的g++编译【转载】
    c++中const与指针总结
  • 原文地址:https://www.cnblogs.com/songhaipeng/p/3252149.html
Copyright © 2011-2022 走看看