如何从一次PickerDialog中获取两次开始时间和结束时间的小时和分钟



timepickerdialog screenshot1 2我只需要从timepickerdialog中获取开始和结束时间,并使用开始和结束的时间值设置TextView,但我有相同的起始和结束时间值,因为我无法从timepicker中获取开始时间的值,当我单击完成时,它会分配timepicker的最后一个值,这是有意义的。顺便说一句,如果有一个糟糕的代码实现,我真的很抱歉。谢谢你的帮助。

private int openingHour = 0;
private int openingMinute = 0;
private int closingHour = 0;
private int closingMinute = 0;
private void setWorkingHoursTextView() {
// TODO Auto-generated method stub
Calendar mCurrentTime = Calendar.getInstance();
int initialHour = mCurrentTime.get(Calendar.HOUR_OF_DAY);
int initialMinute = mCurrentTime.get(Calendar.MINUTE);
TimePickerDialog mTimePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
openingHour = timePicker.getHour();
openingMinute = timePicker.getMinute();
if (openingHour != 0) {
closingHour = timePicker.getHour();
closingMinute = timePicker.getMinute();
}
}
else {
if (openingHour != 0) {
closingHour = timePicker.getCurrentHour();
closingMinute = timePicker.getCurrentMinute();
}
else {
openingHour = timePicker.getCurrentHour();
openingMinute = timePicker.getCurrentMinute();
}
}
workingHoursTextView.setText(
openingHour + ":" + openingMinute + "-" + closingHour + ":" + closingMinute);
}
}, initialHour, initialMinute, true);//Yes 24 hour time
mTimePickerDialog.setMessage("Opening Time");
mTimePickerDialog.show();
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setVisibility(View.VISIBLE);
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setText("Cancel");
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mTimePickerDialog.dismiss();
}
});
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText("Next");
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTag("Next");
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mTimePickerDialog.updateTime(initialHour, initialMinute);
if (mTimePickerDialog
.getButton(DialogInterface.BUTTON_NEGATIVE).getTag().equals("Next")) { //Next
mTimePickerDialog.setMessage("Closing Time");
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText("Back");
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTag("Back");
}
else if (mTimePickerDialog
.getButton(DialogInterface.BUTTON_NEGATIVE).getTag().equals("Back")){ //Back
mTimePickerDialog.setMessage("Opening Time");
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText("Next");
if (openingHour != 0 && openingMinute != 0) {
mTimePickerDialog.updateTime(initialHour, initialMinute);
}
mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTag("Next");
}
else ;
}
});
mTimePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText("Done");

在TimePickerDialog中,有变量selectedHour和selectedMinute。您可以使用它来检索所选内容的值。代码应该像这个

TimePickerDialog mTimePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
if (openingHour != 0) {
closingHour = selectedHour;
closingMinute = selectedMinute;
}
else {
openingHour = selectedHour;
openingMinute = selectedMinute;
}
workingHoursTextView.setText(
openingHour + ":" + openingMinute + "-" + closingHour + ":" + closingMinute);
}
}, initialHour, initialMinute, true);//Yes 24 hour time

最新更新