2011-12-30 26 views
3

私はアンドロイド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

私の問題を解決し、私はこのポストはsetMaxdate(のようなものは何もありませんそのアンドロイド1.5、)、他の人に参考になると思います。 – mH16

答えて

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() 
関連する問題