我找到了一個幫助我獲得鬧鐘設置的教程,但在教程中我們使用了日期選擇器來設置鬧鐘的時間。一切進展順利,所以我試圖用我自己的方法替換日期選擇器,然後設置鬧鐘。問題是它似乎沒有工作,當我將該日期設置爲今天時不會彈出警報,但在使用日期選擇器時工作正常。誰能告訴我我做錯了什麼?我通過調試運行這個,我的查詢返回正確的日期,我得到正確的數字和所有,但它似乎並沒有工作。根據數據庫中的日期設置鬧鐘
我希望有人能指出我錯過的東西?
編輯
我打電話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