我找到了一个帮助我获得闹钟设置的教程,但在教程中我们使用了日期选择器来设置闹钟的时间。一切进展顺利,所以我试图用我自己的方法替换日期选择器,然后设置闹钟。问题是它似乎没有工作,当我将该日期设置为今天时不会弹出警报,但在使用日期选择器时工作正常。谁能告诉我我做错了什么?我通过调试运行这个,我的查询返回正确的日期,我得到正确的数字和所有,但它似乎并没有工作。根据数据库中的日期设置闹钟
我希望有人能指出我错过的东西?
编辑
我打电话setNotif()
通过在用户界面中的按钮。我基本上改造它只是有一个测试按钮。我得到祝酒,但不管我尝试什么,都不会发出警报。
这里是原来的日期选择器代码
public void onDateSelectedButtonClick(View v){
int day = picker.getDayOfMonth();
int month = picker.getMonth();
int year = picker.getYear();
Calendar c = Calendar.getInstance();
c.set(year, month, day);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
scheduleClient.setAlarmForNotification(c);
Toast.makeText(this, "Notification set for: "+ day +"/"+ (month+1) +"/"+ year, Toast.LENGTH_SHORT).show();
}
这是我试图与
它调用查询到从我的数据库获取特定的日期,也应该设定一个来代替它的方法在3天前报警。我通过更改手机的日期并将它设置为今天的闹钟来测试它,但都没有奏效。
public void setNotif() {
// Getting the next date of payments which the alarm will be based on
DatabaseHelper db = new DatabaseHelper(this);
String thisdate = getCurDate();
Cursor cur = db.nextdate(thisdate);
String date= "";
if (cur!= null) {
if (cur.moveToFirst()) {
date = cur.getString(0);
}
}
try {
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
Date input = inputFormat.parse(date);
String finaldate = inputFormat.format(input);
String d = finaldate.substring(8,10);
String m = finaldate.substring(5,7);
String y = finaldate.substring(0,4);
int da = Integer.parseInt(d);
int month = Integer.parseInt(m);
int year = Integer.parseInt(y);
int day = da - 3;
Calendar c = Calendar.getInstance();
c.set(year, month, day);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
scheduleClient.setAlarmForNotification(c);
Toast.makeText(this, "Notification set for: "+ day +"/"+ month +"/"+ year, Toast.LENGTH_SHORT).show();
}catch (Exception ex) {
Alerts.CatchError(Kik.this, ex.toString());
}
}
你在哪里调用这个方法'setNotif()'?让它在按钮回调中强制UI线程上的动作。是否有可能你在后台线程,所以敬酒不敬酒? – xbakesx
哦忘了提及。我会把它放在一个编辑中,谢谢。 – Cai
数据库中的日期是什么样的?你确定它是inyyyy-MM-dd格式吗?你的转换为日历的方法似乎有点奇怪。你在LogCat中获得什么? – JonasCz