您好,这是我第一次开发基于Android的简单应用程序。我需要验证我的开始时间和结束时间,这意味着结束时间不得小于或等于开始时间。我正在使用EditText来提示时间戳对话框。我曾尝试过这段代码,但在下面的行中获取上述错误方面它无法正常工作
Date 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();
}
});
答案 0 :(得分:1)
您的错误原因是您尝试从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(...)
进行解析。
答案 1 :(得分:0)
我认为您必须在格式化之前将字符串格式化为Date 也许修剪()。
Date startTimeDate = format.parse(inputTime.getText().toString().trim());
Date endTimeDate = format.parse(inputEndTime.getText().toString().trim());