TimePickerDialog の代わりに TimePicker を使用している場合は、このコードを使用して Am と PM にアクセスする必要があります。いくつかの投稿では、AM/PM は非公開であり、Android のバグでもあるとのことでした。
グーグルから見つかったこのコードは、私のすべての問題を解決しました。
timePickerFrom = (TimePicker) findViewById(R.id.timePickerFrom);
View amPmView = ((ViewGroup) timePickerFrom.getChildAt(0)).getChildAt(2);
if(amPmView instanceof Button)
{
amPmView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("OnClickListener", "OnClickListener called");
if(v instanceof Button)
{
if(((Button) v).getText().equals("AM"))
{
((Button) v).setText("PM");
if (timePickerFrom.getCurrentHour() < 12) {
timePickerFrom.setCurrentHour(timePickerFrom.getCurrentHour() + 12);
}
}
else{
((Button) v).setText("AM");
if (timePickerFrom.getCurrentHour() >= 12) {
timePickerFrom.setCurrentHour(timePickerFrom.getCurrentHour() - 12);
}
}
}
}
});
}
これで、次を使用して時間を取得できます。
timePickerFrom.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
int timeFromHour = timePickerFrom.getCurrentHour();
int timeFromMinute = timePickerFrom.getCurrentMinute();
}
});
私もこの問題を抱えていましたが、多くの努力の末、成功しました。希望はうまくいきます。