Как я могу сохранить hourOfDay и минуты из timePickerDialog, чтобы сравнить его с какой-то другой переменной?
Я хочу получить hourOfDay и минуты из TimePickerDialog, введенные пользователем, но значения отображаются нулевыми из метода 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. Заранее спасибо.
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);
Если я вас правильно понял, вы хотите получить часы дня и минуты.
Если вы получите правильные значения в обратном вызове, есть 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();
}
});
}