我想从用户输入的TimePickerDialog中获取hourOfDay和分钟,但是onTimeSet方法中的值显示为零。
LoadTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calendar = Calendar.getInstance();
currentHour = calendar.get(Calendar.HOUR_OF_DAY);
currentMinute = calendar.get(Calendar.MINUTE);
timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minutes) {
if (hourOfDay >= 12) {
amPm = "PM";
} else {
amPm = "AM";
}
LoadTime.setText(String.format("%02d:%02d", hourOfDay, minutes) + amPm);
}
}, currentHour, currentMinute, false);
Log.d("INT","val: " + hour);
timePickerDialog.show();
}
});
我想保存这两个变量并执行一些if-else条件。预先感谢。
答案 0 :(得分:2)
您正在使用onTimeSet()
方法之外的日志。
LoadTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calendar = Calendar.getInstance();
currentHour = calendar.get(Calendar.HOUR_OF_DAY);
currentMinute = calendar.get(Calendar.MINUTE);
timePickerDialog = new TimePickerDialog(MainActivity.this, new
TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minutes) {
if (hourOfDay >= 12) {
amPm = "PM";
} else {
amPm = "AM";
}
Log.d("INT","val: " + hourOfDay);
LoadTime.setText(String.format("%02d:%02d", hourOfDay, minutes) + amPm);
}
}, currentHour, currentMinute, false);
timePickerDialog.show();
}
});`
要将值存储在string
中,java字符串.valueOf()
方法将不同类型的值转换为字符串。
例如:
String hourOfDayInString = String.valueOf(hourOfDay);
答案 1 :(得分:1)
如果我说对了,您想获取一天中的小时和分钟。
如果您在回调中获得了正确的值,则可能有3个主要原因导致它们可能在回调之外不正确:
您可以在此处查看一个有效的示例: https://mobikul.com/select-time-using-time-picker-dialog/
如果我们以您的示例为例,您是否尝试过使用一些类字段来存储数字?像这样:
class YourClass {
// Create you variables as class fields
int hourOfDay;
int minutes;
void yourInitMethod() {
LoadTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calendar = Calendar.getInstance();
currentHour = calendar.get(Calendar.HOUR_OF_DAY);
currentMinute = calendar.get(Calendar.MINUTE);
timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minutes) {
// assign field variables
this.hourOfDay = hourOfDay;
this.minutes = minutes;
if (hourOfDay >= 12) {
amPm = "PM";
} else {
amPm = "AM";
}
LoadTime.setText(String.format("%02d:%02d", hourOfDay, minutes) + amPm);
}
}, currentHour, currentMinute, false);
// This one will show you the hour
Log.d("INT","val: " + String.valueOf(hourOfDay));
timePickerDialog.show();
}
});
}