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

EditText解析日期至Calendar计算年龄功能失效问题求助

解决点击计算按钮无反应的问题

首先,最可能导致你点击buttonCalc没反应的原因是没有给按钮绑定点击监听器!虽然你的Activity实现了View.OnClickListener接口,但并没有把这个监听器关联到按钮上,系统根本不知道要把点击事件交给你的onClick方法处理。

第一步:绑定点击监听器

在onCreate方法里,初始化完buttonCalc后,添加这一行代码:

buttonCalc.setOnClickListener(this);

修改后的onCreate代码片段:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_patient);
    editTextName = (EditText) findViewById(R.id.editTextName);
    editTextAge = (EditText) findViewById(R.id.editTextAge);
    editTextBirth = (EditText) findViewById(R.id.editTextBirth);
    editTextComp = (EditText) findViewById(R.id.editTextComp);
    buttonCalc = (Button) findViewById(R.id.buttonCalc);
    // 新增这行,把按钮和点击监听器绑定
    buttonCalc.setOnClickListener(this);
    dateFormat = new SimpleDateFormat("dd/MM/yyyy");
}

第二步:确保日期格式完全匹配

你提到切换输入格式后问题依然存在,这里要注意:SimpleDateFormat的格式字符串必须和用户在editTextBirth中输入的格式完全一致。比如:

  • 如果用户输入的是01012020(无分隔符),那dateFormat要改成new SimpleDateFormat("ddMMyyyy")
  • 如果输入的是01/01/2020(斜杠分隔),就保持"dd/MM/yyyy"

另外,建议给editTextBirth设置输入提示(比如android:hint="请输入dd/MM/yyyy格式日期"),避免用户输入错误格式。

第三步:优化异常反馈逻辑

目前你只在catch里打印堆栈信息,用户看不到任何错误提示,很容易误以为按钮没反应。可以改成弹出Toast提示用户:

catch (ParseException e) {
    e.printStackTrace();
    Toast.makeText(this, "日期格式错误,请输入如01/01/2020的格式", Toast.LENGTH_SHORT).show();
}

最后检查布局匹配

确保你的activity_add_patient布局文件中,按钮的id确实是buttonCalc,和代码里findViewById(R.id.buttonCalc)的id完全对应,避免因为id不匹配导致按钮初始化失败。

按照上面的步骤修改后,点击计算按钮应该就能正常触发年龄计算逻辑了。

内容的提问来源于stack exchange,提问作者Mateus Trinconi Cunha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:50:59