17

DatePickeraの選択した要素に従って、 の最小日付と最大日付を変更する必要がある特定の状況にいSpinnerます。これが、最小日付と最大日付を切り替えるために使用しているコードのチャンクです。

private void switchCalculationMethod(int method) {
    calculationMethod = method;
    switch (method) {
        case METHOD_1:
            datePicker.setMinDate(new LocalDate().minusWeeks(42).getMillis());
            datePicker.setMaxDate(new LocalDate().plusDays(1).getMillis() - 1);
            break;
        case METHOD_2:
            datePicker.setMinDate(new LocalDate().minusWeeks(2).getMillis()); // This don't work!!
            datePicker.setMaxDate(new LocalDate().plusWeeks(40).getMillis()); // This works!!!
            break;
    }
    datePicker.init(today.getYear(), today.getMonthOfYear() - 1,
            today.getDayOfMonth(), this);
}

そのためDatePicker、最初は正しく設定されますが、最小日付を再度変更しようとすると問題が発生します (最大日付の変更が機能します)。最初に設定した値のままです。これはバグだと思います。ここで何か間違ったことをしていますか?これに対する回避策はありますか?

PS : Joda time API を使用しています。

4

4 に答える 4

3

上記のように、実際に値を変更する前にそれらを呼び出すことにより、チェックをバイパスできます。

setMinDate(0);
setMaxDate(Long.MAX_VALUE);

最小値または最大値をデフォルトにリセットする場合は、次の値を使用できます。

setMinDate(-2208902400000L);  // Jan 1, 1900
setMaxDate(4102531200000L);  // Jan 1, 2100
于 2017-04-28T00:58:32.320 に答える
0

最初にsetMinDateを0に更新してから、dateobjectに従ってsetMinDateを更新します

mPicker.setMinDate(0);

mPicker.setMinDate(datepickerObject.getTimeInMillis());

于 2016-11-29T11:22:46.707 に答える