Android开发提示Cannot resolve symbol 'DatePiker' 日期选择功能失效求解
问题原因与修复方案
直接报错的核心原因
- 拼写错误:你定义的内部类名称为
DatePicker,但实例化时写为DatePiker,遗漏了字母c,导致无法识别对应类。 - 类引用路径错误:
DatePicker是你在MainActivity中定义的静态内部类,不属于Calendar类,不能通过Calendar的实例对象calendario调用该内部类。
修复代码
找到点击事件的代码块:
imageViewDataOC.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DialogFragment dialogFragment = new calendario.DatePiker(); dialogFragment.show(getSupportFragmentManager(), "DataInicial"); } });
修改为:
imageViewDataOC.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DialogFragment dialogFragment = new DatePicker(); dialogFragment.show(getSupportFragmentManager(), "imageViewDataOC"); } });
其他隐藏问题修复
- 月份显示错误
Android原生Calendar的月份取值范围为0-11,0对应1月、11对应12月,直接回填会导致月份显示比实际少1,需要修改两处回填代码:
- 初始化日期的代码:
editTextDataOC.setText(dia + "/" + (mes + 1) + "/" + ano);
- 日期选择回调的代码:
editTextDataOC.setText(day + "/" + (month + 1) + "/" + year);
- 日期选择后不回填问题
你在onDateSet中判断的tag为imageViewDataOC,但原代码show方法传入的tag为DataInicial,判断条件不匹配会导致选完日期不会回填,上面的修复代码已经同步修改了传入的tag为匹配值。
内容的提问来源于stack exchange,提问作者Lucas da Costa Silva
相关产品推荐
相关产品推荐

