私のプログラムはクラシックandroid.app.TimePickerDialog
を表示し、OnTimeSetListener.onTimeSet()
. onTimeSet()
Android 4.3 から 5.1 に移行した後、キーボードを使用して分を入力して [OK] を押すと、ハンドラーに間違った値が渡されることに気付きました。ただし、Enterダイアログで[OK]ボタンを押す前にキーボードを押すと(または時間の入力をクリックするか、スピナーを使用するだけで)、値は正しくなります。
NumberPicker
ユーザーがOKを押したときに、フォーカスがクリアされていないことに関係があると思います。
Enterスピナーを数分間使用したり、キーボードをさらに押したりするのは不便です。OKボタンだけで自分の値を受け入れるにはどうすればよいですか?
import android.app.*;
...
private final DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
...
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIMEPICKER_DIALOG:
return new TimePickerDialog(ChannelActivity.this, mTimeSetListener, day.get(Calendar.HOUR_OF_DAY), day.get(Calendar.MINUTE), true);
}
return super.onCreateDialog(id);
}