You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:25:20