web-dev-qa-db-ja.com

android:TimePickerDialogは、ユーザーが過去の時刻を選択できないようにし、新しい日付で将来の時刻を選択できるようにします

私はこのリンクを使用しています Android TimePickerDialog set max time

私はAndroidが初めてです。このコードの助けを借りて、私は過去の時間を選択することはできませんが、未来の時間を選択することはできません。タイムピッカーダイアログモードで12を選択すると、前日ではなく翌日に合わせて自動的にamに変更されます。

7
Atif Amin

このコードを試してください:

TimePickerFragment timePickerFragment = new TimePickerFragment();
            timePickerFragment.setOnTimeSetListener(new OnTimeSetListener() {
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    Calendar datetime = Calendar.getInstance();
                    Calendar c = Calendar.getInstance();
                    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
                    datetime.set(Calendar.MINUTE, minute);
                    if (datetime.getTimeInMillis() >= c.getTimeInMillis()) {
                        //it's after current
                         int hour = hourOfDay % 12;
                    btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
                            minute, hourOfDay < 12 ? "am" : "pm"));
                    } else {
                        //it's before current'
                        Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show();
                    }
                }
            });
            timePickerFragment.show(getSupportFragmentManager(), "TIME");

timepickerダイアログが表示され、ユーザーが現在時刻より前の時刻を選択すると、無効な時刻が表示されます。

[〜#〜]編集[〜#〜]インポートする必要があります:

import Android.app.TimePickerDialog;
import Android.app.Fragment;
import Android.app.DialogFragment;
import Java.util.Calendar;
import Android.widget.TimePicker;

これが良いです

15
rafsanahmad007

最善の解決策は、 this マテリアルデザインライブラリを使用して、時刻または日付を選択し、最小値を設定することです。

    TimePickerDialog tpd = TimePickerDialog.newInstance(
        new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
                //put some interesting code
            }
        },
        now.get(Calendar.HOUR_OF_DAY),
        now.get(Calendar.MINUTE),
        true
    );
    tpd.setMinTime(10, 0, 0); // MIN: hours, minute, secconds
    tpd.show(getFragmentManager(), "TimePickerDialog");

Material DateTime Pickerライブラリをプロジェクトに追加する最も簡単な方法は、build.gradleへの依存関係として追加することです。

dependencies {
    compile 'com.wdullaer:materialdatetimepicker:3.0.0'
}

これがお役に立てば幸いです。

6
Dmitry Velychko