Если я вас правильно понял, вы хотите получить часы дня и минуты.
Если вы получите правильные значения в обратном вызове, есть 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();
}
});
}