J'ai un fragment, qui contient et ArrayList des intentions de notification en attente.Android: getContext() dans Fragment renvoie null uniquement lorsque vous laissez sur le bouton Précédent
Je construis cette liste de rappels dans onPause(), parce que je veux seulement que le message apparaisse lorsque l'application n'est pas exécutée en premier plan. Tout fonctionne bien si je laisse l'application sur le bouton HomeScreen, mais si je laisse sur le bouton Précédent, le compilateur me dit que j'essaie d'appeler getSystemService() sur une référence nulle.
OnPause PRINCIPALES Activitie:
@Override
protected void onPause() {
super.onPause();
tasksFragment.buildReminderList();
}
Voici la méthode du Fragment:
public void buildReminderList() {
mReminderList = new ArrayList<>();
if (mTaskList != null) {
for (int i = 0; i < mTaskList.size(); i++) {
if (mTaskList.get(i).hasReminder() && mTaskList.get(i).getMillisLeftToday() > 0) {
AlarmManager alarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
intent = new Intent(getContext(), AlertReceiver.class);
intent.putExtra("title", mTaskList.get(i).getName());
intent.putExtra("ID", i);
alarmIntent = PendingIntent.getBroadcast(getContext(), i, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, mTaskList.get(i).getReminderHour());
calendar.set(Calendar.MINUTE, mTaskList.get(i).getReminderMinutes());
if (calendar.before(Calendar.getInstance())) {
calendar.add(Calendar.DATE, 1);
}
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 60 * 24, alarmIntent);
mReminderList.add(alarmIntent);
}
}
}
}
Merci, qui évite le plantage. Mais alors il ne sauvegarde plus la liste de rappel. Une idée de comment je peux résoudre ceci? –
Vous devez utiliser un service pour y parvenir, lire à propos de [récepteurs de diffusion] (https://developer.android.com/reference/android/content/BroadcastReceiver.html) –
Merci. Je suppose que je peux aussi simplement déplacer la méthode buildReminderList entière du fragment dans l'activité principale. –