大家好,这是我第一次开发一个简单的基于 Android 的应用程序。我需要验证我的开始时间和结束时间,这意味着结束时间不能小于或等于开始时间。我正在使用 EditText 来提示时间选择器对话框。我试过这段代码,但它不起作用,在下面的行中出现上面的错误
日期 endTimeDate = format.parse(inputEndTime.getText().toString());
这是 EditText 字段的 OnClickListener 的全部代码,用于提示时间选择器对话框。我什至试图反转 if-else 中的语句,但它对我也不起作用。任何人都可以帮助我。真的非常感谢!
inputEndTime.OnClickListener代码:
inputEndTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
int hour = myTime.get(Calendar.HOUR_OF_DAY);
int min = myTime.get(Calendar.MINUTE);
TimePickerDialog myEndTimePickerDialog = new TimePickerDialog(ViewDocActivity.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
try
{
Date startTimeDate = format.parse(inputTime.getText().toString());
Date endTimeDate = format.parse(inputEndTime.getText().toString());
if (startTimeDate.compareTo(endTimeDate) <= 0)
{
Context timeContext = getApplicationContext();
CharSequence text = "Please enter the correct end time";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(timeContext, text, duration);
toast.show();
}
else
{
inputEndTime.setText(String.format("%02d:%02d", hourOfDay, minute));
}
}
catch(ParseException e)
{
e.printStackTrace();
}
}
}, hour, min, true);
myEndTimePickerDialog.setTitle("Select Time");
myEndTimePickerDialog.show();
}
});
最佳答案
错误的原因是,您正试图从 EditText (inputEndTime
) 解析时间,但在您执行 format.parse() 时它是空的
。
设置时,您有一个 EditText 和一个 TimePickerDialog。现在您正在实现 TimePickerDialog.OnTimeSetListener#onTimeSet() 方法。此处获取时间,用户通过方法的 hourOfDay
和 minute
参数在对话框中选择。此时您有时间,但它还没有写入 EditText 字段本身。
因此,让您的代码正常工作的最简单解决方案是在执行任何进一步操作之前在您的 EditText 字段中设置该时间。为此,将以下行添加为 onTimeSet()
方法的第一行:
inputEndTime.setText(String.format("%02d:%02d", hourOfDay, minute));
这会将选择的时间设置为 EditText 字段中的文本,其格式可以稍后使用 format.parse(...)
进行解析。
关于java.text.ParseException : Unparseable date: "" (at offset 0) error for timepickerdialog 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007746/