2013-04-25 141 views
1

我已經使用DatePicker從用戶輸入的生日日期計算年齡。現在我想限制用戶選擇一個將來的日期...這是我在mainActivity.java限制用戶在日期選擇器中選擇未來日期

@SuppressLint("NewApi") 

public static class DatePickerFragment extends DialogFragment        
    implements DatePickerDialog.OnDateSetListener 
{  
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) 
    {  
     // Use the current date as the default date in the picker   
     final Calendar c = Calendar.getInstance();   
     int mBirthYear = c.get(Calendar.YEAR);   
     int mMonthOfYear = c.get(Calendar.MONTH);   
     int mDayOfMonth= c.get(Calendar.DAY_OF_MONTH);   
     // Create a new instance of DatePickerDialog and return it  
return new DatePickerDialog(getActivity(), this, mBirthYear,mMonthOfYear ,mDayOfMonth ); 

}   


public void onDateSet(DatePicker view, int mBirthYear, int mMonthOfYear, int mDayOfMonth) 
{ 
    int mAge; 
    mAge = Year-mBirthYear; 
    if ((mMonthOfYear == Month && Day < mDayOfMonth) || (Month < mMonthOfYear)) 
     { 
        mAge--; 
      }     

       String years = String.valueOf(mAge); 
        MainActivity.textView6.setText(years); 
+0

檢查所選的日期與當前日期的作品,如果它不是將來的日期限制並顯示相應的錯誤消息。 – 2013-04-25 04:07:11

回答

0

這是反向操作已經使用的代碼。限制選擇過期日期。

我不知道這個

任何特殊的方法,但我解決了這個樣子,這可能不是標準之一,但對我來說

public void onDateSet(DatePicker view, int selectedYear, 
      int selectedMonth, int selectedDay) { 
     final Calendar cf = Calendar.getInstance(); 
     year = cf.get(Calendar.YEAR); 
     month = cf.get(Calendar.MONTH); 
     day = cf.get(Calendar.DAY_OF_MONTH); 

     // Log.e("year", selectedYear + "year " + year); 
     if (selectedYear < year) { 
      Toast.makeText(getApplicationContext(), 
        "Please choose future date", 1).show(); 
     } 
     if (selectedMonth < month) { 
      if (selectedYear <= year) { 
       Toast.makeText(getApplicationContext(), 
         "Please choose future date", 1).show(); 
      } else { 
       year = selectedYear; 
       month = selectedMonth; 
       day = selectedDay; 

       // set selected date into textview 
       shipdate.setText(new StringBuilder().append(month + 1) 
         .append("-").append(day).append("-").append(year) 
         .append(" ")); 
      } 
     } 
     if (selectedDay < day) { 
      if (selectedMonth <= month) { 
       if (selectedYear <= year) { 
        Toast.makeText(getApplicationContext(), 
          "Please choose future date", 1).show(); 

       } else { 
        year = selectedYear; 
        month = selectedMonth; 
        day = selectedDay; 

        // set selected date into textview 
        shipdate.setText(new StringBuilder().append(month + 1) 
          .append("-").append(day).append("-") 
          .append(year).append(" ")); 
       } 

      } else { 
       year = selectedYear; 
       month = selectedMonth; 
       day = selectedDay; 

       // set selected date into textview 
       shipdate.setText(new StringBuilder().append(month + 1) 
         .append("-").append(day).append("-").append(year) 
         .append(" ")); 
      } 

     } else { 
      year = selectedYear; 
      month = selectedMonth; 
      day = selectedDay; 

      // set selected date into textview 
      shipdate.setText(new StringBuilder().append(month + 1) 
        .append("-").append(day).append("-").append(year) 
        .append(" ")); 
     } 

    } 
}; 
相關問題