如何从时间选择器对话框中设置时间?
How to set time from time picker dialog?
我想设置两次,即提醒时间和到期时间。我为警报时间和到期时间创建了两个对话框。我试图在不同的日期对象中设置两个时间。不过,当我更改警报时间时,到期时间也会更改。我想以不同方式保存这两个值。
private int ALERT_TIME_DIALOG, ALERT_DATE_DIALOG,DUE_TIME_DIALOG,DUE_DATE_DIALOG;
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay;
String minuteString = minute < 10 ? "0"+minute : ""+minute;
String secondString = second < 10 ? "0"+second : ""+second;
String aTime,dTime;
SimpleDateFormat df = new SimpleDateFormat("hh:mm a");
if(ALERT_TIME_DIALOG == 2) {
Date alertDate = new Date();
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,0);
alertDate = mCalendar.getTime();
aTime = df.format(alertDate);
alertTime.setText(aTime);
}
if(DUE_TIME_DIALOG == 4){
Date dueDate = new Date();
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,0);
dueDate = mCalendar.getTime();
dTime = df.format(dueDate);
dueTime.setText(dTime);
}
}
alertTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ALERT_TIME_DIALOG = 2;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
dueTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DUE_TIME_DIALOG = 4;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
这里有什么问题吗?
谢谢你..
按如下方式修改您的代码:您已为警报和截止日期对话框设置了两个不同的标签。因此,当您重复该过程时,既设置了值又在 onTimeSet
方法中都执行了 if 语句。
private int TIME_PICKER_DIALOG_TAG;
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay;
String minuteString = minute < 10 ? "0"+minute : ""+minute;
String secondString = second < 10 ? "0"+second : ""+second;
SimpleDateFormat df = new SimpleDateFormat("hh:mm a");
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,0);
Date date = mCalendar.getTime();
if(TIME_PICKER_DIALOG_TAG == 2) {
alertTime.setText(df.format(date));
}else if(TIME_PICKER_DIALOG_TAG == 4){
dueTime.setText(df.format(date));
}
}
alertTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TIME_PICKER_DIALOG_TAG = 2;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
dueTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TIME_PICKER_DIALOG_TAG = 4;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
我想设置两次,即提醒时间和到期时间。我为警报时间和到期时间创建了两个对话框。我试图在不同的日期对象中设置两个时间。不过,当我更改警报时间时,到期时间也会更改。我想以不同方式保存这两个值。
private int ALERT_TIME_DIALOG, ALERT_DATE_DIALOG,DUE_TIME_DIALOG,DUE_DATE_DIALOG;
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay;
String minuteString = minute < 10 ? "0"+minute : ""+minute;
String secondString = second < 10 ? "0"+second : ""+second;
String aTime,dTime;
SimpleDateFormat df = new SimpleDateFormat("hh:mm a");
if(ALERT_TIME_DIALOG == 2) {
Date alertDate = new Date();
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,0);
alertDate = mCalendar.getTime();
aTime = df.format(alertDate);
alertTime.setText(aTime);
}
if(DUE_TIME_DIALOG == 4){
Date dueDate = new Date();
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,0);
dueDate = mCalendar.getTime();
dTime = df.format(dueDate);
dueTime.setText(dTime);
}
}
alertTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ALERT_TIME_DIALOG = 2;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
dueTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DUE_TIME_DIALOG = 4;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
这里有什么问题吗? 谢谢你..
按如下方式修改您的代码:您已为警报和截止日期对话框设置了两个不同的标签。因此,当您重复该过程时,既设置了值又在 onTimeSet
方法中都执行了 if 语句。
private int TIME_PICKER_DIALOG_TAG;
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) {
String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay;
String minuteString = minute < 10 ? "0"+minute : ""+minute;
String secondString = second < 10 ? "0"+second : ""+second;
SimpleDateFormat df = new SimpleDateFormat("hh:mm a");
mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
mCalendar.set(Calendar.SECOND,0);
Date date = mCalendar.getTime();
if(TIME_PICKER_DIALOG_TAG == 2) {
alertTime.setText(df.format(date));
}else if(TIME_PICKER_DIALOG_TAG == 4){
dueTime.setText(df.format(date));
}
}
alertTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TIME_PICKER_DIALOG_TAG = 2;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});
dueTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TIME_PICKER_DIALOG_TAG = 4;
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
AddTaskActivity.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
mHoursMode
);
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
});