2016-12-01 4 views
0

ユーザが会議をスケジュールするための開始日時を取得しようとしています。 私がed_start_dateをクリックすると、DatePickerとTimePickerが1つずつ表示されます。 私はこれよりも簡単にこれを行うことができますし、SQLiteデータベースに挿入するために選択した値を保存するにはどうすればいいですか...アドバイスのためのtks開始のためのDateTimeイベントAndroid Studio

何かは、セットのstarDateTime stopDateTime

if (v == ed_start_date) { 
     final Calendar c = Calendar.getInstance(); 
     startYear = c.get(Calendar.YEAR); 
     startMonth = c.get(Calendar.MONTH); 
     startDay = c.get(Calendar.DAY_OF_MONTH); 
     startHour = c.get(Calendar.HOUR_OF_DAY); 
     startMinute = c.get(Calendar.MINUTE); 

     DatePickerDialog datePickerDialog = new DatePickerDialog(this, 
       new DatePickerDialog.OnDateSetListener() { 

        @Override 
        public void onDateSet(DatePicker view, int year, 
              int monthOfYear, int dayOfMonth) { 
        if(year>=startYear & monthOfYear>=startMonth &   dayOfMonth>=startDay) 
         ed_start_date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); 
         else 
         Toast.makeText(MeetingsAddEditActivity.this, "Selected date can not be less than current date!", Toast.LENGTH_SHORT).show(); 
        } 
       }, startYear, startMonth, startDay); 
     datePickerDialog.show(); 

     TimePickerDialog timePickerDialog = new TimePickerDialog(this, 
       new TimePickerDialog.OnTimeSetListener() { 

        @Override 
        public void onTimeSet(TimePicker view, int hourOfDay, 
              int minute) { 
         if(hourOfDay>startHour) 
          ed_start_date.append(hourOfDay + ":" + minute); 
         else 
          Toast.makeText(MeetingsAddEditActivity.this, "Selected time can not be less than current time!", Toast.LENGTH_SHORT).show(); 
        } 
       }, startHour, startMinute, false); 
     timePickerDialog.show(); 

     } 


    if (v == ed_stop_date) { 

     final Calendar c = Calendar.getInstance(); 
     stopYear = c.get(Calendar.YEAR); 
     stopMonth = c.get(Calendar.MONTH); 
     stopDay = c.get(Calendar.DAY_OF_MONTH); 
     stopHour = c.get(Calendar.HOUR_OF_DAY); 
     stopMinute = c.get(Calendar.MINUTE); 

     DatePickerDialog datePickerDialog = new DatePickerDialog(this, 
       new DatePickerDialog.OnDateSetListener() { 

        @Override 
        public void onDateSet(DatePicker view, int year, 
              int monthOfYear, int dayOfMonth) { 
         if(year==startYear & monthOfYear==startMonth & dayOfMonth==startDay) 
          ed_stop_date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); 
         else 
          Toast.makeText(MeetingsAddEditActivity.this, "Selected date can not be different than start date!", Toast.LENGTH_SHORT).show(); 
        } 
       }, stopYear, stopMonth, stopDay); 
     datePickerDialog.show(); 


     TimePickerDialog timePickerDialog = new TimePickerDialog(this, 
       new TimePickerDialog.OnTimeSetListener() { 

        @Override 
        public void onTimeSet(TimePicker view, int hourOfDay, 
              int minute) { 
         if(hourOfDay>=startHour) 
          ed_stop_date.setText(hourOfDay + ":" + minute); 
         else 
          Toast.makeText(MeetingsAddEditActivity.this, "Selected time can not be less than start time!", Toast.LENGTH_SHORT).show(); 
        } 
       }, stopHour, stopMinute, false); 
     timePickerDialog.show(); 
    } 

答えて

0

は、私はこれについて移動する最良の方法はtimepickerとDatePickerの両方を含むカスタムダイアログを作成することだと思います。こうすることで、ユーザは、解消する前に同じダイアログで日付と時刻を設定することができます。

最も簡単な方法は、https://github.com/afollestad/material-dialogs

ようなライブラリを使用するか、またはカスタムレイアウトを作成し、それを膨らませるかもしれません。

関連する問題