#android #android-pendingintent #preferenceactivity
#Android #android-pendingintent #preferenceactivity
Вопрос:
Я пытаюсь настроить PendingIntent внутри PreferenceActivity в методе, но Eclipse отображает ошибку красного подчеркивания «AlarmReceiverChangeImage не может быть преобразован в переменную». Ошибка связана с «AlarmReceiverChangeImage», который является именем BroadcastReceiver.
Можете ли вы сказать мне, как изменить код, чтобы он не выдавал ошибку при «AlarmReceiverChangeImage»?
private void setRepeatingAlarm(int time_before_changing_wallpaper) {
/*
* Set up alarm manager and get it going.
*/
AlarmManager myAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent myIntent = PendingIntent
.getBroadcast(SettingsActivity.this, 0,
AlarmReceiverChangeImage, 0);
myAlarmManager.setRepeating(
AlarmManager.RTC_WAKEUP, START_TIME,
time_before_changing_wallpaper, myIntent);
}
Обновить:
Просмотрев ссылку, предоставленную Kurtis, я также обнаружил, что она будет работать, если я внес следующие изменения в код.
Добавлен этот статический финал:
общедоступный класс SettingsActivity расширяет PreferenceActivity реализует OnSharedPreferenceChangeListener {
protected static final Intent AlarmReceiverChangeImage = null;
SharedPreferences pref;
Изменен метод, чтобы он выглядел следующим образом:
private void setRepeatingAlarm(int time_before_changing_wallpaper, Intent AlarmReceiverChangeImage) {
Изменен вызов метода, чтобы он выглядел следующим образом:
/*
* Set the default wallpaper changing time of 10
* seconds if it has not already been set.
*/
String str_list_time_before_changing_wallpaper = pref
.getString(
"list_time_before_changing_wallpaper",
"");
if (str_list_time_before_changing_wallpaper
.equals(null)) {
/*
* Set the repeating alarms.
*/
setRepeatingAlarm(EVERY_10_SECONDS, AlarmReceiverChangeImage);
}
Ответ №1:
Пожалуйста, посмотрите документацию для метода getBroadcast. Вы заметите, что третий аргумент должен быть Intent, а не BroadcastReciever, как вы пытаетесь сделать. Что вам нужно сделать, это создать и намерение, а затем поместить IntentFilter в ваш BroadcastReciever в манифесте, чтобы ваш BroadcastReciever получал намерение при его трансляции.
Комментарии:
1. Привет, Куртис, спасибо за помощь. Действительно, Emad.