1

メソッドのPreferenceActivity内にPendingIntentを設定しようとしていますが、Eclipseに「AlarmReceiverChangeImageを変数に解決できません」という赤い下線エラーが表示されます。BroadcastReceiverの名前である「AlarmReceiverChangeImage」にエラーがあります。

「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);
                        }
4

1 に答える 1

1

getBroadcastメソッドのドキュメントをご覧ください。3番目の引数は、あなたがやろうとしているBroadcastRecieverではなく、Intentであることになっていることに気付くでしょう。あなたがする必要があるのは、マニフェストのBroadcastRecieverにIntentFilterを作成してIntentを配置し、BroadcastRecieverがブロードキャストされるたびにIntentを受信するようにすることです。

于 2011-10-19T21:43:01.557 に答える