2012-02-29 2 views
3

datepicker에서 지난 날짜를 선택하면 어제 날짜를 받아 들일 수 없습니다.datepicker에서 지난 날짜를 선택하는 것을 허용하지 않으려면 어떻게해야하나요?

DatePicker.setMinDate(new Date().getTime()) 

: 내 응용 프로그램은 그 방법이 API 레벨 11 이후

mDateDisplay = (TextView) findViewById(R.id.dateDisplay); 
      Button pickDate_btn = (Button) findViewById(R.id.pickDate); 
      pickDate_btn.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       showDialog(DATE_DIALOG_ID); 
      } 
     }); 

     final Calendar now = Calendar.getInstance(); 
     mYear = now.get(Calendar.YEAR); 
     mMonth = now.get(Calendar.MONTH); 
     mDay = now.get(Calendar.DAY_OF_MONTH); 

     updateDisplay();  

@Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
      case DATE_DIALOG_ID: 
       return new DatePickerDialog(this, 
          mDateSetListener, 
          mYear, mMonth, mDay); 
     } 
     return null; 
    } 

    @Override 
    protected void onPrepareDialog(int id, Dialog dialog) { 
     switch (id) { 

      case DATE_DIALOG_ID: 
       ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay); 
       break; 
     } 
    }  

    private void updateDisplay() { 
     mDateDisplay.setText(
      new StringBuilder() 
        // Month is 0 based so add 1 
        .append(mDay).append("-") 
        .append(mMonth + 1).append("-") 
        .append(mYear).append(" ")); 
    } 

    private DatePickerDialog.OnDateSetListener mDateSetListener = 
      new DatePickerDialog.OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) { 
        // TODO Auto-generated method stub 

      mYear = year; 
        mMonth = monthOfYear; 
        mDay = dayOfMonth; 
        updateDisplay(); 

    //should add code here?    
       } 
      }; 

답변

3

우리는 과거가 아닌 날짜를 선택 DatePicker에서 제한 모든 속성을 설정할 수는 없지만, 우리는에 의해 프로그래밍을 할 수있는 경우 :

if(dateObj1.before(dateObj2) || dateObj1.equals(dateObj2)){ 
//the program runs normally 
} 
else{ 

       new AlertDialog.Builder(PM_Edit.this) 

       .setTitle("Wrong Data Input!") 

       .setMessage("The end Date must be Before the start Date, please insert new Date values") 

       .setNeutralButton("Ok", 

       new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, 

       int which) { 

       } 

       }).show(); 
      } 
+0

dateObj1 n dateObj2는 텍스트 뷰입니까? datepicker를 선택한 후? 우리는 단지 비교합니까? –

+0

아니요 이러한 것은 텍스트보기가 아니며 날짜 유형입니다. 새 날짜 (currentTimeMillis()) 및 dateOvject1 = new Date (1900 년, 월, 일)로 current (dateObj2)를 작성하십시오. – jeet

+0

내 코드를 기반으로한다면 ... onDateSet 부분에 코드를 넣어야합니까? –

7

감사합니다 ... 제발 안내 현재 date.anyone보다 선택하지 못할 사용자에게 알려주는 메시지를 메시지가 표시됩니다 또는 그 일을하지 (옛 API) 다음

Date datePickerDate = // get the value here; 
Date currentDate = new Date(); 
if (datePickerDate.before(currentDate)) { 
    // error ! 
} 
+0

감사합니다. 이것을 필요로했습니다 : –

+1

DatePicker가 CalendarView와 함께 표시되면 setMinDate는 사용자가 과거 날짜를 선택하는 것을 막지 않습니다. 그것은 단지 'minDate'이전의 날짜를 회색으로 처리합니다. setMinDate는 DatePicker가 Spinner와 함께 표시 될 때만 작동합니다. –

+1

@AntonioSesto, https://github.com/wdullaer/MaterialDateTimePicker를 사용합니다.이 버그가 없습니다. – CoolMind

관련 문제