2011-01-30 90 views
0

我想要在用戶簽入複選框時發出警報。這裏是我的代碼:Android日曆始終與日期相同

if (cb1.isChecked()) 
    { 
     Calendar calA = Calendar.getInstance(); 
     //calA.set(Calendar.YEAR, Calendar.YEAR); 
     //calA.set(Calendar.MONTH, Calendar.MONTH); 
     //calA.set(Calendar.DAY_OF_MONTH, Calendar.DAY_OF_MONTH); 
     calA.set(Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY); 
     calA.set(Calendar.MINUTE, Calendar.MINUTE); 
     calA.set(Calendar.SECOND, Calendar.SECOND); 
     calA.set(Calendar.MILLISECOND, Calendar.MILLISECOND); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, calA.getTimeInMillis(), pendingIntentA); 
     Toast.makeText(main.this, "Set time: " + String.valueOf(calA.getTime()), Toast.LENGTH_SHORT).show(); 
    } 

其他代碼工作正常,如果我設定的小時和分鐘來具體的,如

calA.set(Calendar.HOUR_OF_DAY, 15); 
calA.set(Calendar.MINUTE, 24); 

它的工作,但與此代碼我總是得到這個吐司消息: Sat Mar 05 11:12:00或Sat Mar 05 11:12:13 (日期和時間都不好)

我的代碼出了什麼問題?

+0

好的。我試過這個:\t \t Calendar now = Calendar.getInstance(); \t \t alarmManager.set(AlarmManager.RTC_WAKEUP,now.getTimeInMillis(),pendingIntentA); – erdomester 2011-01-30 14:06:27

回答

1

Calendar.HOUR_OF_DAY是一個常數,它恰好是一個整數。

當你

calA.set(Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY); 

你其實一天的小時值設置爲任何數字恰好被選中了這個常數。這個值對於一天中的小時沒有實際意義,所以它會產生垃圾結果。

當你的日曆,它的默認設置爲當前的時間,因此,如果這就是你要什麼,根本就沒有設置時間:

像其他語言環境敏感類, Calendar提供了一個類方法getInstance,用於獲取此類型的通用對象。 Calendar的getInstance方法返回一個Calendar對象其日曆字段已用當前日期和時間初始化:

Calendar rightNow = Calendar.getInstance(); 

如果你再要設置像「五分鐘進入未來」一時間,做一些事情如:

calA.add(Calendar.MINUTE, 5); 

如果您仍然得到不正確的時間,請驗證系統時間設置是否正確。

來源:

+0

您是否期待音頻報警?警報管理器的設計目的並非如此;當警報觸發時,您提供的意圖被解僱,正如[文檔]中所述(http://developer.android.com/reference/android/app/AlarmManager.html)。 – 2011-01-30 14:21:14