TimePickerDialog cancel button problem.
来源:互联网 发布:java数组为空和为null 编辑:程序博客网 时间:2024/05/29 11:50
在Android version 4.4.4下使用TimePickerDialog的时候,TimePickerDialog.OnTimeSetListener的事件在点击确定和取消的时候都会被执行。
在编程的时候常常不想在取消时执行OnTimeSetListener,所以可以使用下面方法解决这个问题。
public class MyTimePickerDialog {private TimePickerDialog dp = null;private boolean saveBtnPress = false; private OnTimeChangeListener listener = null;public void setTitle (String title){dp.setTitle(title);}public MyTimePickerDialog (Context ct, OnTimeChangeListener l){listener = l;Calendar c = Calendar.getInstance();initDatePickerDialog (ct, c);}public MyTimePickerDialog (Context ct, Calendar calendar, OnTimeChangeListener l){listener = l;initDatePickerDialog (ct, calendar);}private void initDatePickerDialog (Context ct, Calendar c){int hour = c.get(Calendar.HOUR_OF_DAY);int min = c.get(Calendar.MINUTE);dp = new TimePickerDialog(ct, new timePickListener(), hour, min, true);dp.setCancelable(false);dp.setIcon(R.drawable.ic_launcher);dp.setButton(DatePickerDialog.BUTTON_POSITIVE, "Save", new datePickButtonListener());dp.setButton(DatePickerDialog.BUTTON_NEGATIVE, "Cancel", new datePickButtonListener());}public void show (){dp.show();}class datePickButtonListener implementsDialogInterface.OnClickListener {public void onClick(DialogInterface dialog, int which) {switch (which){case DatePickerDialog.BUTTON_POSITIVE:saveBtnPress = true;break;case DatePickerDialog.BUTTON_NEGATIVE:saveBtnPress = false;break;}}}class timePickListener implements TimePickerDialog.OnTimeSetListener{@Overridepublic void onTimeSet(TimePicker view, int hourOfDay, int minute) {if (listener != null){listener.OnTimeChange(saveBtnPress, hourOfDay, minute);}}}public interface OnTimeChangeListener {void OnTimeChange (boolean saveBtnPress, int hour, int min);}}
但是上面方法有一个问题,在Android version 4.4.2中会出现OnTimeSetListener无法被调用的问题。可以使用AlertDialog 来解决这个问题。
public class MyTimePickerDialog {private OnTimeChangeListener listener = null;public MyTimePickerDialog (Context ct, OnTimeChangeListener l){listener = l;Calendar c = Calendar.getInstance();initDatePickerDialog (ct, c);}public MyTimePickerDialog (Context ct, Calendar calendar, OnTimeChangeListener l){listener = l;initDatePickerDialog (ct, calendar);}private void initDatePickerDialog (Context ct, Calendar c){int hour = c.get(Calendar.HOUR_OF_DAY);int min = c.get(Calendar.MINUTE);final TimePicker timePicker = new TimePicker(ct);timePicker.setIs24HourView(true);timePicker.setCurrentHour(hour);timePicker.setCurrentMinute(min);new AlertDialog.Builder(ct).setTitle("Set Dining Time:").setPositiveButton("OK", new AlertDialog.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {SmabDebug.log(timePicker.getCurrentHour() + ":"+ timePicker.getCurrentMinute());if (listener != null){listener.OnTimeChange(timePicker.getCurrentHour(), timePicker.getCurrentMinute());}}}).setNegativeButton("Cancel",new AlertDialog.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {SmabDebug.log("Click Cancelled!");}}).setView(timePicker).show();}public interface OnTimeChangeListener {void OnTimeChange (int hour, int min);}}
0 0
- TimePickerDialog cancel button problem.
- 动态添加UIActionSheet cancel button
- iOS—自定义UISearchBar Cancel Button
- TimePickerDialog
- coolite cancel all row selection problem
- cancel
- CANCEL
- ios7 UISearchDisplayController cancel button title 自定义取消按键标题
- Prevent to cancel Action Mode by press back button
- button auto submit problem solving
- 在vb.net 中判断input的press button是Cancel还是OK
- Struts中html:button、html:submit、html:cancel等标签中的文字如何国际化?
- TimePickerDialog使用
- 改变TimePickerDialog
- Fuzhou Problem 1920 Left Mouse Button
- html:cancel
- AsyncTask cancel
- cancel toast
- 关于计算机中小端法和大端法存储的一点总结
- 【boost学习】之boost::bind
- 实现在mysql数据库中保存text大文本和blob大二进制数据
- UVA - 193 Graph Coloring
- 计算机网络课程设计--基于winpcap实现简单的抓包
- TimePickerDialog cancel button problem.
- HDU-4249-A Famous Equation(DP)
- 浅谈数据库索引
- 写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来。文本文件大约是30KB~300KB大小
- MySQL索引背后的数据结构及算法原理
- 集合变数组 练习笔记
- 数据库操作
- 数据库--客户端工具
- 坑爹啊!gradle 2.1构建android出现错误的解决方案