У меня возникают некоторые проблемы с внедрением TimePicker в моем приложении, которое позволяет пользователю изменять время записи базы данных до ее вставки.
Проблема заключается в том, что при нажатии кнопки AM/PM метод onTimeChanged (View, int, int) не вызывается. Всякий раз, когда я изменяю либо часовое, либо минутное значение TimePicker, вызывается onTimeChanged().
Сценарии:
- Пользователь просто нажимает кнопку AM/PM: AM/PM НЕ обновлен
 - Пользователь нажимает часы/минуты: время обновляется
 - Пользователь нажимает кнопку AM/PM, а затем изменяет часы/минуты: время и AM/PM обновлены
 
Неужели я ошибаюсь, думая, что кнопка AM/PM должна быть нажата, чтобы обновить время, не изменив значение времени после кнопки am/pm?
Я собрал небольшой тестовый проект для тиражирования этого и вот код:
активность
public class TestActivity extends Activity implements OnTimeChangedListener {
    private Calendar mCalendar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timepicker);
        mCalendar = Calendar.getInstance();
        TimePicker tp = (TimePicker)findViewById(R.id.timepicker);
        tp.setIs24HourView(false);
        tp.setOnTimeChangedListener(this);
    }
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        Log.d("TAG", "In onTimeChanged");
        mCalendar.set(mCalendar.get(Calendar.YEAR),
                      mCalendar.get(Calendar.MONTH),
                      mCalendar.get(Calendar.DAY_OF_MONTH),
                      hourOfDay,
                      minute);
        setCalendarTime();
    }
    private void setCalendarTime() {
        Date date = mCalendar.getTime();
        if (date != null) {
            SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy '@' h:mm a");
            String dateTime = formatter.format(date);
            Toast.makeText(this, dateTime, Toast.LENGTH_LONG).show();
        }
    }
}
timepicker.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:fillViewport="true">
    <TimePicker android:id="@+id/timepicker"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dip"
                android:layout_marginRight="5dip"/>
</LinearLayout>