android:TimePickerDialog阻止用户选择过去的时间,并可以使用新日期选择未来的时间



我正在使用这个链接Android TimePickerDialog设置最长时间。

我是安卓系统的新手。在这个代码的帮助下,我不能选择过去的时间,但我们不能选择未来的时间。当在时间选择器对话框模式中选择12时,根据下一天而不是上一天自动更改为am。

试试这个代码:

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");

它将显示CCD_ 1对话框,如果用户选择当前时间之前的任何时间。。。它将显示无效时间。。

编辑您需要导入:

import android.app.TimePickerDialog;
import android.app.Fragment;
import android.app.DialogFragment;
import java.util.Calendar;
import android.widget.TimePicker;

这是一个很好的示例

对您来说,最好的解决方案是使用此材料设计库来选择时间或日期并设置最小值。

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库添加到项目中的最简单方法是将其作为依赖项添加到构建中。gradle

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

希望这对你有帮助。

private int  mHour, mMinute;
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(ActivityScheduleTransfer.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
final Calendar checkOldDate = Calendar.getInstance();
if (hourOfDay >= checkOldDate.get(Calendar.HOUR_OF_DAY)) { 
if (hourOfDay == checkOldDate.get(Calendar.HOUR_OF_DAY) && minute <= checkOldDate.get(Calendar.MINUTE)) {
return;
}
//select current after 
} else {`enter code here`
//select current before 
}
}
}, mHour, mMinute, false);
timePickerDialog.show();

最新更新