messaggio di errore “AlarmReceiverChangeImage” nella dichiarazione PendingIntent all'interno di un metodo
-
27-10-2019 - |
Domanda
Sto cercando di impostare un PendingIntent all'interno di un PreferenceActivity in un metodo, ma viene visualizzato un errore di Eclipse sottolineatura rossa "AlarmReceiverChangeImage non può essere risolto a una variabile". L'errore è su "AlarmReceiverChangeImage" che è il nome di un BroadcastReceiver.
Puoi dirmi come modificare il codice in modo da non dare l'errore "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);
}
Aggiornamento: Dopo aver guardato il link fornito da Kurtis ho anche trovato che funzionerà se ho fatto le seguenti modifiche al codice.
Aggiunto questo static finale:
public class SettingsActivity estende attrezzi PreferenceActivity OnSharedPreferenceChangeListener {
protected static final Intent AlarmReceiverChangeImage = null;
SharedPreferences pref;
cambiato il metodo di guardare in questo modo:
private void setRepeatingAlarm(int time_before_changing_wallpaper, Intent AlarmReceiverChangeImage) {
Modificata la chiamata al metodo per assomigliare a questo:
/*
* 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);
}
Soluzione
Si prega di guardare il documetnation per la metodo getBroadcast . Noterete il terzo argomento si suppone che sia un intento, non un BroadcastReciever come si sta cercando di fare. Quello che dovete fare è creare e intenti e poi mettere un IntentFilter sul BroadcastReciever nel manifesto in modo che la vostra BroadcastReciever riceve l'intento, quando mai è di broadcast.