Сообщение об ошибке «AlarmReceiverChangeImage» в операторе PendingIntent внутри метода - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь установить 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 расширяет возможности PreferenceActivityOnSharedPreferenceChangeListener {

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 Ответ

1 голос
/ 20 октября 2011

Пожалуйста, посмотрите документацию для метода getBroadcast . Вы заметите, что третий аргумент должен быть намерением, а не BroadcastReciever, как вы пытаетесь это сделать. Что вам нужно сделать, это создать и Intent, а затем поместить IntentFilter в свой BroadcastReciever в манифесте, чтобы ваш BroadcastReciever получал Intent, когда бы он ни транслировался.

...