2012-01-11 12 views
1

私のdatepickerからDay/Month/Yearを取得しようとしています。私は月が正しいことは決してないという問題があります。私はあなたに以下のコードを与えます。月は正しいが、月が12月のときは失敗する。その日は決して正確ではありません。Androidがdatepickerからデータを使用しています

public class myOnDateChangedListener implements OnDateChangedListener { 

    public void onDateChanged(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     if (view.getId() == R.id.datePicker1) { 
      startDay = view.getDayOfMonth(); 
      if(view.getMonth() == 11){ 
       startMonth = 12; 
      }else{ 
      startMonth = (view.getMonth() + 1); 
      } 
      startYear = view.getYear(); 

     } 
     if (view.getId() == R.id.datePicker2) { 
      endDay = view.getDayOfMonth(); 
      if(view.getMonth() == 11){ 
       endMonth = 12; 
      }else{ 
      endMonth = (view.getMonth() + 1); 
      } 

      endYear = view.getYear(); 

     } 

    } 

} 
+0

問題の内容を正確に記述できますか? 12月を選択したときにアプリケーションがクラッシュするか、または間違った値を返した場合、返される値は何ですか? –

+0

12月を選択すると、mysqlデータベースの月が00に設定され、その日も正しくありません。 –

答えて

2

なぜメソッドで渡された値ではなく、ビューの値を使用しますか?

public void onDateChanged(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     if (view.getId() == R.id.datePicker1) { 
      startDay = dayOfMonth; 
      startMonth = monthOfYear + 1; 
      startYear = year; 
     } 
     if (view.getId() == R.id.datePicker2) { 
      endDay = dayOfMonth; 
      endMonth = monthOfYear + 1; 
      endYear = year; 
     } 

    } 

EDIT:またヶ月== 11の特殊なケースのための必要は、このコード(独自に修正を)試していないあなたのコメントを読んだ後、私はあなたが得る問題は、他のいくつかの混乱があるかもしれないと感じあなたの側に:

public Date(int year, int month, int date) 

1月第一千九百年度の1日から開始日を初期化します:私はthisようになったJava Dateクラスのコンストラクタがあるという事実を意味します。警告:月は0〜11、1〜31の間です。コンストラクタを見てください。問題がDatePicker自体にあるのか、それともJavaコードであるのかを検出したい場合は、原因の範囲を狭めるためにログを記録してみてください。

関連する問題