0

SimpleDateFormatter.parse() 関数を使用するとエラーが発生します。ユーザーに DatePicker と TimePicker をそれぞれ使用して日付と時刻を入力させ、両方のピッカーから情報を収集し、Date オブジェクトを作成して、それを別の日付オブジェクト (システム日付) と比較できるようにします。

しかし、日付を解析して日付形式を形成しようとすると、エラーが発生します。 エラーフォーム 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());

このエラーに関するヘルプをいただければ幸いです。

ありがとう、シド

4

3 に答える 3

0

問題はそれdateがnullであることです。onClickListener 内のコードは、ボタンが押されるまで実行されません。

于 2011-04-26T04:05:25.540 に答える
0

これはsdf初期化されていないオブジェクトではなく、おそらくdataまだ null のままの String です (ただし、その前のコードを見るまではわかりません)。を解析しようとしますが、投稿したものから、クリックするまで呼び出されないdate値を変更/配置するだけです。OnClickListener

したがって、基本的に行うことは次のとおりです。

  1. 文字列日付を宣言します。
  2. onclicklistener を設定します。
  3. date初期化する前に文字列を使用してください。

デフォルト値を日付に設定するか、解析をリスナーにも配置して修正します(必要な正しいロジックに答えるものは何でも)

于 2011-04-26T04:06:26.527 に答える
0

dateonClick リスナーの外部で解析するため、その時点で変数dateが初期化されていない可能性があります。リスナー内で try/catch サイクルを移動する必要があると思います。

于 2011-04-26T04:04:06.457 に答える