2013-04-30 48 views
0

我想在Android中開發預留應用程序。對於日期字段,我使用datePickerDialog。但是,我想在達到當前日期時禁用遞減按鈕,以便用戶無法在過去進行預約。禁用日期選擇器中的遞減按鈕

你有什麼想法該怎麼做?

這是我的活動類:

public class DatePickerActivity extends Activity { 

private int mYear; 
private int mMonth; 
private int mDay; 


private TextView mDateDisplay; 
private Button mPickDate; 

static final int DATE_DIALOG_ID = 0; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mDateDisplay = (TextView) findViewById(R.id.showMyDate);   
    mPickDate = (Button) findViewById(R.id.myDatePickerButton); 

    mPickDate.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      showDialog(DATE_DIALOG_ID); 
     } 
    }); 


    // get the current date 
    final Calendar c = Calendar.getInstance(); 

    mYear = c.get(Calendar.YEAR); 
    mMonth = c.get(Calendar.MONTH); 
    mDay = c.get(Calendar.DAY_OF_MONTH); 


    // display the current date 
    updateDisplay(); 

} 
private void updateDisplay() { 

    String selectedDate = mDay+"-"+ mMonth + 1 + "-"+mYear; 

    this.mDateDisplay.setText(
     new StringBuilder() 
       .append(mDay).append("-") 
       // Month is 0 based so add 1 
       .append(mMonth + 1).append("-") 

       .append(mYear).append(" ")); 
} 

private DatePickerDialog.OnDateSetListener mDateSetListener = 
     new DatePickerDialog.OnDateSetListener() { 
      public void onDateSet(DatePicker view, int year, 
            int monthOfYear, int dayOfMonth) { 
       mYear = year; 
       mMonth = monthOfYear; 
       mDay = dayOfMonth; 
       updateDisplay(); 
      } 
     }; 

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

      } 

      return null; 
     } 
} 

回答

0

使用您的日曆對象進行比較的日期值和日曆設定值的變更日期

Calendar c; 

oncreate(){ 
// initialize Calendar object 
} 

private DatePickerDialog.OnDateSetListener mDateSetListener = 
    new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, 
           int monthOfYear, int dayOfMonth) { 

      Date date = new Date(); 
      c = Calendar.getIntance(); // here you need to create new instance of calendar because its time was older 
      mYear = year; 
      mMonth = monthOfYear; 
      mDay = dayOfMonth; 
      c.set(mYear, mMonth, mDay); 

      // now check here your Calendar date was after current date then update 
      // otherwise do nothing 

      if(c.getTime().getTime()>date.getTime()){ // updated condition 
       updateDisplay(); 
      } 
     } 
    }; 
+0

我想你的建議,但我得到了我textview固定與當前日期。即使日期有效,它也不會改變。問題是什麼? – 2013-04-30 13:04:13

+0

我認爲問題出在if條件下,我們如何替換它? – 2013-04-30 13:16:30

+0

嗨我已經更新了我的答案plz檢查 – Pratik 2013-04-30 14:01:07