java.text.ParseException : Unparseable date: "" (at offset 0) error for timepickerdialog 异常

标签 java android timepickerdialog

大家好,这是我第一次开发一个简单的基于 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() 方法。此处获取时间,用户通过方法的 hourOfDayminute 参数在对话框中选择。此时您有时间,但它还没有写入 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/

相关文章:

java - 将Java编译器标志添加到android gradle项目中除 Protocol Buffer 之外的所有内容

android - TimePickerDialog 中的标题

android - 在Android TimePickerDialog 的EditText 中获取时间显示

java - Wildfly 10 不显示调试消息

线程中的 Java 异常 EOFException

java - 使用 install4j 以 root 身份启动服务

android - 如何获取我的应用程序 APK 的 URL? (Google Play 保护申诉)

java - Android Socket 连接(权限被拒绝)

Android Web View shouldOverrideUrlLoading() 已弃用。(替代)

android - DatePickerDialog 和 TimePickerDialog 不能同时工作