Я столкнулся с той же проблемой. У меня есть приложение TimePicker, в котором после выбора времени и нажатия кнопки вы попадете на экран, показывающий, какое время было выбрано. Выбранное «время» было правильным, но иногда значение AM / PM было бы противоположным выбранному. Я наконец исправил это, изменив то, что я сохранял для аргумента «hrs» из TimePicker.
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener()
{
@Override
public void onTimeSet(TimePicker view, int hrs, int mins)
{
hour = hrs;
minute = mins;
c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hour);
//instead of c.set(Calendar.HOUR, hour);
c.set(Calendar.MINUTE, minute);
Теперь, когда я нажал кнопку, чтобы перейти к следующему экрану, он правильно показал правильное выбранное значение AM / PM.