Android编程之TimePickerDialog设置确定键导致OnTimeSetListener不响应问题
在调用TimePickerDialog时,如果要修改TimePickerDialog中确定键的名字,就需要调用setButton(int whichButton,CharSequence text,OnClickListener listener)方法,重新设置确定键的名字。但这样直接设置,例如下面的代码,就会造成OnTimeSetListener中onTimeSet不响应。
TimePickerDialog timePickerDialog = new TimePickerDialog(this,new OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay,int minute) {System.out.println("time:" + hourOfDay + ":"+ minute);}}, calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE), false);timePickerDialog.setTitle(R.string.title);timePickerDialog.setButton(TimePickerDialog.BUTTON_POSITIVE,getString(R.string.ok),new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});timePickerDialog.show();
所以,这里要改一下setButton(int whichButton, CharSequence text,OnClickListener listener)中,最后传入的参数,由OnClickListener listener改为TimePickerDialog对象本事,这样就可以响应OnTimeSetListener中onTimeSet的方法。代码如下:
TimePickerDialog timePickerDialog = new TimePickerDialog(this,new OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay,int minute) {System.out.println("time:" + hourOfDay + ":"+ minute);}}, calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE), false);timePickerDialog.setTitle(R.string.title);timePickerDialog.setButton(TimePickerDialog.BUTTON_POSITIVE,getString(R.string.ok), timePickerDialog);timePickerDialog.show();
注意:setButton最后一个参数,不是OnClickListener对象。
补一句:DatePickerDialog也是一样的。