Xamarin Android C#:DatePickerDialog月份始终从0开始的问题求助
问题分析与解决方案
你的代码存在两个关键问题,导致月份显示异常:
1. 文本赋值时使用了未修正的原始月份变量
你已经给this.month赋值为month + 1,但设置EditText文本时直接用了原始的month变量(未加1),所以显示的还是0基的月份值。
2. 月份修正的位置错误
你在创建DatePickerDialog的代码块里直接处理月份,但实际上DatePickerDialog的回调方法(onDateSet)才是获取用户选择日期的正确位置,你应该在回调里对月份做+1操作,而不是在Dialog初始化阶段。
修正后的代码示例
首先确保你的Fragment实现DatePickerDialog.OnDateSetListener接口,然后重写onDateSet方法:
// 创建DatePickerDialog的代码(传入的初始月份保持0基即可,无需提前加1) DatePickerDialog datePickerDialog = new DatePickerDialog(this.Activity, this, year, month, day); datePickerDialog.Show(); // 重写日期选择完成的回调方法 public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // 对0基月份做+1修正,转换为日常使用的1基月份 int correctedMonth = monthOfYear + 1; this.year = year; this.month = correctedMonth; this.day = dayOfMonth; // 使用修正后的月份设置EditText文本 eventdatesetText.EditText.Text = $"{correctedMonth}/{dayOfMonth}/{year}"; }
额外注意事项
- 确认
eventdatesetText.EditText已正确绑定界面上的EditText控件 - 如果初始日期是从其他数据源获取的,传入
DatePickerDialog的初始月份必须保持0基格式(比如当前是1月,初始month值应为0)
内容的提问来源于stack exchange,提问作者Zeno
相关产品推荐
相关产品推荐

