Ошибка функции разбора Simple Date Formatter - PullRequest
0 голосов
/ 26 апреля 2011

Я получаю сообщение об ошибке при использовании функции SimpleDateFormatter.parse ().Я заставляю пользователя вводить дату и время через DatePicker и TimePicker соответственно, и я собираю информацию от обоих сборщиков и пытаюсь создать объект Date, чтобы я мог сравнить его с другим объектом даты (System Date).

Но когда я пытаюсь разобрать дату, чтобы сформировать формат даты, я получаю сообщение об ошибке.Error form Logcat

Кусок кода, вызывающего ошибку:

 btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
         int day =  dpicker.getDayOfMonth();
         int month = dpicker.getMonth() + 1;

         if (month < 10)
         {
             monthS = "0" + month;
         }
         else
         {
             monthS = String.valueOf(month);
         }
         int year = dpicker.getYear();

         int minutes = tpicker.getCurrentMinute();
         int hours = tpicker.getCurrentHour();
         if (hours < 10)
         {
             hoursS = "0" + hours;
         }
         else
         {
             hoursS = String.valueOf(hours);
         }


          date = year + "-" + monthS + "-" + day + " " + hoursS + ":" +  minutes  ; 

         tview.setText("Date and Time are" + date) ;


        }
    });

   SimpleDateFormat sdf =   new SimpleDateFormat("yyyy-MM-dd hh:MM");

   try {
     newDate = sdf.parse(date);

} catch (java.text.ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
tview2.setText(newDate.toString());

Буду признателен за любую помощь по этой ошибке.

Спасибо, Сид

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

Проблема в том, что date равно нулю.Код внутри вашего onClickListener не будет выполняться, пока не будет нажата кнопка.

0 голосов
/ 26 апреля 2011

Это не объект sdf, который не инициализирован, это, вероятно, строка data, которая все еще равна нулю (хотя мы не можем быть уверены, пока не увидим код перед ней).Вы пытаетесь разобрать date, но из того, что вы опубликовали, вы только изменяете / помещаете значение в OnClickListener, которое не вызывается до щелчка.

Итак, что вы в основном делаете:

  1. объявить строковую дату.
  2. установить onclicklistener.
  3. использовать строку date перед ее инициализацией.

Исправить, установивзначение по умолчанию на сегодняшний день или же синтаксический анализ в слушателе (все, что соответствует правильной логике, которая вам нужна)

0 голосов
/ 26 апреля 2011

Вы анализируете date вне слушателя onClick, поэтому, возможно, в это время переменная date не инициализируется.Я думаю, что вы должны переместить цикл try / catch внутри слушателя.

...