TimerPickerDialog 中 onTimeSet 执行两次的问题
开发android小闹钟的程序时,在添加闹钟时闹钟列表中总是出现两个相同的闹钟。
btnAddAlarm.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
if(tpd == null){
addAlarm();
} tpd.show();
}
});
private void addAlarm() { TimePickerDialog.OnTimeSetListener otsl = new OnTimeSetListener() { @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar setTime = Calendar.getInstance();
setTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
setTime.set(Calendar.MINUTE, minute);
setTime.set(Calendar.SECOND,0);
setTime.set(Calendar.MILLISECOND, 0); Calendar currentTime = Calendar.getInstance(); if (setTime.getTimeInMillis() <= currentTime.getTimeInMillis()) {
setTime.setTimeInMillis(setTime.getTimeInMillis()+ 24 * 60 * 60 * 1000);
} adapter.add(new AlarmData(setTime.getTimeInMillis())); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
setTime.getTimeInMillis(), 5 * 60 * 1000,
PendingIntent.getBroadcast(getContext(),
new AlarmData(setTime.getTimeInMillis()).getId(),
new Intent(getContext(),
AlarmReceiver.class), 0)); saveAlarmList(); }
}; Calendar c = Calendar.getInstance();
int hourOfDay = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
tpd = new TimePickerDialog(getContext(), otsl, hourOfDay, min, true);
}
刚开始以为是adapter的问题,于是在初始化函数中加了添加闹钟的代码,结果只有一个闹钟。最后确定是TimePickerDialog的问题,上网查找才知道这是android4.1和4.2的bug,需要重写TimePickerDialog中的onStop方法,把onStop()中super.onStop()注释掉就行了
tpd = new TimePickerDialog(getContext(), otsl, hourOfDay, min, true){
@Override
protected void onStop() {
//super.onStop();
}
};
TimerPickerDialog 中 onTimeSet 执行两次的问题的更多相关文章
- AOP中Advice执行两遍的原因
在我的spring项目中,Aop的Advice执行了两边,就好像拦截了两遍一样. 原因是:切面应该切到接口的实现类上,而不是接口上
- Jquery Mobile中pageinit等函数执行两次的问题【终极解决】
当禁用了jqueryMobile的ajax后,初始化函数如pageinit和pageshow等函数,都会执行两次.document.ready函数也会执行两次. 当然我们可以用一个变量记录是否已经执行 ...
- 关于struts2中action请求会执行两次的问题
关于struts2中action请求会执行两次的问题 在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...
- 关于Spring中,定时任务执行两次的解决办法
原因:如果spring-quartz.xml文件,在Spring的配置文件spring-config.xml中被加载,那么定时任务会被Spring和SpringMVC扫描两次,所以会被执行两次. 解决 ...
- 分析解决 spring quartz 中出现的执行两次问题
1. 问题描述 在开发询盘功能时,遇到一个需求,就是后台定时任务执行用电施工业务的工单下发. 使用的技术是 spring quartz,因为其他应用有先例,配置quartz 完成后,先写了一个 hel ...
- SSH开发中 使用超链接到action 其excute方法会被执行两次 actual row count: 0; expected: 1
由于执行两次excute,所以在做删除操作的时候会出现 Batch update returned unexpected row count from update [0]; actual row c ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错
可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...
- spring定时器,定时器一次执行两次的问题
Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task" htt ...
随机推荐
- 【BZOJ1787】[Ahoi2008]Meet 紧急集合 LCA
[BZOJ1787][Ahoi2008]Meet 紧急集合 Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 ...
- xcode官网下载地址
https://developer.apple.com/downloads/
- chrome inspect 离线调试-工具包 怎么使用
1.找到相关目录: C:\Users\当前用户\AppData\Local\Google\Chrome\User Data\Default 2.找到以下文件夹: 1.Application Cache ...
- OC开发_Storyboard——Core Data
一 .NSManagedObjectContext 1.我们要想操作Core Data,首先需要一个NSManagedObjectContext2.那我们如何获得Context呢:创建一个UIMana ...
- 问答项目---登陆账号密码登陆做AJAX异步校验
异步验证管理员帐号方法: /* 异步验证管理员帐号 */ public function checkAccount(){ if(!IS_AJAX){echo "页面不存在";die ...
- Dij二级最短路
hdu1245 Saving James Bond Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- poj3349 Snowflake Snow Snowflakes【HASH】
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 49991 Accep ...
- IIS与ASP.NET中的线程池
1. W3 Thread Pool(W3TP) 当处于内核模式的http.sys接收到来自用户的请求之后,会将请求放入队列中.那处于用户模式的w3wp进程如何从内核模式的队列中取出请求呢?I/O完成端 ...
- Python开发【项目】:RPC异步执行命令(RabbitMQ双向通信)
RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步h ...
- 监听checkbox事件
<!DOCTYPE html> <html> <head> <title></title> </head> <script ...