1

2 つの DatePicker (From と To) と「Special request」というボタンを含むアクティビティがあります。アクティビティで最初に行うことは、両方の DatePicker の minDate と maxDate を設定することです。次に、ボタンをクリックして、それらの minDate と maxDate を今日の日付 + 1 日に更新します。

最初に呼び出す setDate() メソッドは次のとおりです。

public void setDate() {

    final Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month = c.get(Calendar.MONTH);
    day = c.get(Calendar.DAY_OF_MONTH);
    beginDate.init(year, month, day, null);
    endDate.init(year, month, day, null);
    long minTime = System.currentTimeMillis() - 1000; // -1 second
    beginDate.setMinDate(minTime + 1209600000L); // +14 days
    beginDate.setMaxDate(minTime + 31556952000L); // +1 year
    endDate.setMinDate(minTime + 1209600000L);
    endDate.setMaxDate(minTime + 31556952000L);
}

および setSpecialDate() は非常に似ています:

public void setSpecialDate() {

    long minTime = System.currentTimeMillis() - 1000; // -1 second
    beginDate.setMinDate(minTime + 86400000L); // +1 day
    beginDate.setMaxDate(minTime + 31556952000L); // +1 year
    endDate.setMinDate(minTime + 86400000L);
    endDate.setMaxDate(minTime + 31556952000L);
    final Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month = c.get(Calendar.MONTH);
    day = c.get(Calendar.DAY_OF_MONTH);
    beginDate.updateDate(year, month, day);
    endDate.updateDate(year, month, day);
}

そして、 setDate() の後に呼び出されるリスナー (前に呼び出しても何も変わりません):

public void addRequestListener() {

    specialRequest = (Button) findViewById(R.id.specialRequest);
    specialRequest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setSpecialDate();           
        }
    });
}

問題は、setSpecialDate() の setMinDate() と setMaxDate() の両方が機能しないことです。これは、DatePickers が最初に設定された日付より下の日付を表示しないためです...

4

0 に答える 0