2011-12-30 142 views
3

我正在使用android 1.5中的DatePicker。我想設置最大日期和最小日期。最小日期應該是當前日期,最大日期應該是日期,我將從字符串中提供日期作爲maxYear,maxMonth,maxDay。(假設今天的日期= 30/12/2011,但它選擇29/12/2011)Android 1.5中onDateChanged()中的最大和最小日期的日期選擇器?

一切工作正常與最小日期。因爲它只顯示當前日期。但在選擇使用減號按鈕選擇器上,它選擇一個日期少於今天的日期。 如果選擇最大日期,則會選擇大於最大日期的日,月和年。

如何限制用戶不要選擇小於最小日期和最大日期。我必須付出什麼額外的條件才能使它完美?

enter code here 

///Whole code same 


mport java.sql.Date; 
import java.util.Calendar; 
import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.DatePicker; 
import android.widget.TimePicker; 
import android.widget.Toast; 
import android.widget.DatePicker.OnDateChangedListener; 

public class DatePickerActivity extends Activity implements Button.OnClickListener { 
public String dateOutput=null; 

final Calendar c = Calendar.getInstance(); 
int minYear1 = c.get(Calendar.YEAR); 
int minMonth1 = c.get(Calendar.MONTH); 
int minDay1 = c.get(Calendar.DAY_OF_MONTH); 

int maxYear = 2011;// 
int maxMonth = 12; 
int maxDay = 29; 

int minYear = minYear1; 
int minMonth = minMonth1; 
int minDay = minDay1; 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
DatePicker DateDP = (DatePicker) findViewById (R.id.ad_date_picker); 
DateDP.init(minYear1, minMonth1, minDay1, new OnDateChangedListener() 
    { 

    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
     { 
      if (year < minYear) 
      view.updateDate(minYear, minMonth, minDay); 

      if (monthOfYear < minMonth && year == minYear ) 
      view.updateDate(minYear, minMonth, minDay); 



      if (dayOfMonth < minDay && year == minYear && monthOfYear == minMonth) 
      view.updateDate(minYear, minMonth, minDay); 


      if (year > maxYear) 
      view.updateDate(maxYear, maxMonth, maxDay); 

      if (monthOfYear > maxMonth && year == maxYear) 
      view.updateDate(maxYear, maxMonth, maxDay); 

      if (dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth) 
      view.updateDate(maxYear, maxMonth, maxDay); 

      dateOutput = String.format("Date Selected: %02d/%02d/%04d", 
             dayOfMonth, monthOfYear+1, year); 
      // Log.d("Debug", dateOutput); 



      Toast.makeText(DatePickerActivity.this,dateOutput, Toast.LENGTH_SHORT).show(); 


     }}); // DateDP.init() 



    } 



} 
+0

我覺得這個職位將可幫助他人,其Android 1.5,其中有沒有像setMaxdate()。 – mH16 2011-12-30 04:00:30

回答

4

這樣,我解決我的問題

DateDP.init(minYear, minMonth, minDay, new OnDateChangedListener() 
    { 

    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
    { 
      if (year > maxYear ||monthOfYear > maxMonth && year == maxYear|| 
       dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth){ 
      // Toast.makeText(DatePickerActivity.this,"max year", Toast.LENGTH_SHORT).show(); 

      view.updateDate(maxYear, maxMonth, maxDay); 

      dateOutput = String.format("%04d-%02d-%02d", 
       maxYear, maxMonth+1, maxDay); 
      //Toast.makeText(DatePickerActivity.this,"maxYear "+dateOutput, Toast.LENGTH_SHORT).show(); 

      }else if(year < minYear ||monthOfYear < minMonth && year == minYear|| 
       dayOfMonth < minDay && year == minYear && monthOfYear == minMonth){ 


      //Toast.makeText(DatePickerActivity.this,"min year", Toast.LENGTH_SHORT).show(); 

      view.updateDate(minYear, minMonth, minDay); 

      dateOutput = String.format("%04d-%02d-%02d", 
        minYear, minMonth+1, minDay); 

       //Toast.makeText(ManageShowing.this,dateOutput, Toast.LENGTH_SHORT).show();        

      }else{ 

      //Toast.makeText(ManageShowing.this,"else", Toast.LENGTH_SHORT).show(); 

      dateOutput = String.format("%04d-%02d-%02d", 
        year, monthOfYear+1, dayOfMonth); 

        // Toast.makeText(ManageShowing.this,dateOutput, Toast.LENGTH_SHORT).show();      

      } 
      mDateDisplay.setText(dateOutput); 

    }}); // DateDP.init() 
相關問題