0
在Android上,我使用TimePicker对话框设置了EditText。默认时间是现在,但使用TimePicker时间shuld更改。Android TimePicker问题
我有三个问题:
1)选择其他时间,有时displayng时间上的EditText不会改变; 2)如果我使用TimePicker并选择同一时间,它会改变+12h(例如现在是09.35,但它显示21.35);
3)如果让我选择一个小时> = 17.00我有一个例外:
07-19 11:47:17.574 16224-16224/com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapp, PID: 16224
java.lang.ArrayIndexOutOfBoundsException: length=17; index=18
at java.util.Calendar.set(Calendar.java:1122)
at com.example.myapp.activities.MyActivity$9.onTimeSet(MyActivity.java:513)
at android.app.TimePickerDialog.onClick(TimePickerDialog.java:133)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:160)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5376)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
这是我的TimePicker功能:
// TimePicker settings
public void setTimeFields(final EditText editText) {
// Calendar instance
final Calendar calendar = Calendar.getInstance();
// TimePicker definition
TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calendar.set(hourOfDay, minute);
editText.setText(new SimpleDateFormat("HH:mm", Locale.ITALIAN).format(calendar.getTime()));
}
}, calendar.get(Calendar.HOUR), calendar.get(Calendar.MINUTE), DateFormat.is24HourFormat(this));
// Show dialog
timePickerDialog.show();
}
在这里,我editext定义:
etxTime = (EditText) findViewById(R.id.etxTime);
etxTime.setInputType(InputType.TYPE_NULL);
etxTime.setText(new SimpleDateFormat("HH:mm", Locale.ITALIAN).format(Calendar.getInstance().getTime()));
etxTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setTimeFields(etxTime); } });
我哪里错了?
根据您的建议我更改 'calendar.set(hourOfDay,minute);编辑文本.setText(新的SimpleDateFormat(“HH:mm”,Locale.ITALIAN).format(calendar.getTime())); ' 至 'calendar.set(hourOfDay,minute); editText.setText(String.valueOf(hourOfDay)+“:”+ String.valueOf(minute)); ' 这解决了问题1)和2)对我来说,但3)坚持。 所以我删除行'calendar.set(hourOfDay,minute);'它正常工作。 感谢您的建议。不管怎样,为什么'calendar.set(hourOfDay,minute);'创建java.lang.ArrayIndexOutOfBoundsException? – Fedro
我也不知道它为什么抛出异常。无论如何,如果您认为我的解决方案是正确的,请接受我的回答。 –