轉(zhuǎn)帖|使用教程|編輯:我只采一朵|2014-07-23 11:28:49.000|閱讀 1917 次
概述:本文介紹在Xamarin中使用DatePickerDialog的一些技巧。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在 Xamarin 中在使用Datepicker的時(shí)候,一般情況下只需要在對(duì)應(yīng)的按鈕或其他控件的點(diǎn)擊事件中使用如下語(yǔ)句即可完成:
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時(shí),則可能出現(xiàn)如下錯(cuò)誤提示:
Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@4159dd40 is not valid; is your activity running?
這是因?yàn)樵谑褂肁ctivityGroup的時(shí)候是使用到Activity嵌套,使用this獲取的不是當(dāng)前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")); }); }
如上代碼中紅色標(biāo)注,需要將this修改為Parent,以此獲取當(dāng)前Activity,如使用到多層嵌套,則使用多個(gè)Parent。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn