2011-01-30 4 views
0

Я хочу, чтобы будильник погас, когда пользователь установил флажок. Вот мой код:Android Calendar всегда в ту же дату

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); 

он работает, но с этим кодом я всегда получаю этот тост сообщение: Сб Мар 05 11:12:00 или ср Мар 05 11:12:13 (ни дата, ни время не являются хорошими)

Что не так с моим кодом?

+0

ОК. Я пробовал это: \t \t Calendar now = Calendar.getInstance(); \t \t alarmManager.set (AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntentA); – erdomester

ответ

1

Calendar.HOUR_OF_DAY - это константа, которая как раз и является целым числом.

Когда вы

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

вы на самом деле установка час дня к тому, что число случается, что были выбраны для этой константы. Это значение не имеет реального значения по отношению к часу дня, так что это приведет к появлению мусора.

Когда вы получаете календарь, это по умолчанию установлено текущее время, так что если это то, что вы собираетесь, просто не установить время:

Как и другие локали чувствительных классов, Календарь предоставляет метод класса getInstance для получения обычно полезного объекта этого типа. Метод деЫпзЬапсе Календаря возвращает объект календаря чей календарь поле инициализированы с текущей датой и временем:

Calendar rightNow = Calendar.getInstance(); 

Если после этого вы хотите, чтобы установить время, как «5 минут в будущее», сделать что-то например:

calA.add(Calendar.MINUTE, 5); 

Если вы по-прежнему получаете неправильное время, убедитесь, что системное время установлено правильно.

Источник:

+0

Ожидаете ли вы звуковой сигнал? Менеджер аварийных сообщений не предназначен для этого; когда срабатывает аварийный сигнал, умывается его намерение, как описано [в документации] (http://developer.android.com/reference/android/app/AlarmManager.html). –

0

Calendar calA = Calendar.getInstance(); возвращает объект, календарь локаль в зависимости от настроек системы и времени, поля были инициализированы с текущей датой и временем.

Sebastian P является правильным, что Calendar.HOUR_OF_DAY является константой, ключом/индексом, используемым для ссылки на фактическое значение часа.

См. http://developer.android.com/reference/java/util/Calendar.html

Смежные вопросы