erreur:Tentative d'invoquer la méthode virtuelle java.lang.Objet android.contenu.Contexte.getSystemService(java.lang.String)' sur un objet nul de référence
public class AlarmTask implements Runnable{
//The date selected for the alarm
private final Calendar date;
//The android system alarm manager
private final AlarmManager am;
//Your context to retrieve the alarm manager from
private final Context context;
public AlarmTask(Context context, Calendar date) {
this.context = context;
this.am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); //error for this line
this.date = date;
}
Il y a des questions similaires, mais après cogner ma tête, je ne pouvais pas régler le problème. J'obtiens ces erreurs suivantes! Est-ce dû à des fragments?
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at android.content.ContextWrapper.getSystemService(ContextWrapper.java:562)
at lol.com.epl.AlarmTask.<init>(AlarmTask.java:24)
at lol.com.epl.ScheduleService.setAlarm(ScheduleService.java:47)
at lol.com.epl.ScheduleClient.setAlarmForNotification(ScheduleClient.java:58)
at lol.com.epl.FixFragment.onCreateView(FixFragment.java:88)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1026)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
C'est la façon dont je suis l'appel de la classe
public void setAlarm(Calendar c) {
//This starts a new thread to set the alarm
//You want to push off your tasks onto a new thread to free up the UI to carry on responding
new AlarmTask(this, c).run();
}
C'est là que j'appelle la setAlarm fonction
public void setAlarmForNotification(Calendar c){
ScheduleService mBoundService = new ScheduleService();
mBoundService.setAlarm(c);
}
Votre contexte est null. Post comment faites-vous appel à cette classe et où
OriginalL'auteur | 2015-10-11
Vous devez vous connecter pour publier un commentaire.
Dans votre code la
la
context
estnull
.La vérification de votre stacktrace votre sont en cours d'initialisation de la
AlarmTask
dansDéplacer cet appel dans le
onActivityCreated
méthode.OriginalL'auteur Gabriele Mariotti
Si vous êtes de retour à un fragment, tout en étant à l'intérieur d'un autre fragment, et une fois de retour à la fragment que vous exécutez une méthode qui est à l'origine de la
Enveloppé de cette méthode dans un
et le problème sera résolu.
OriginalL'auteur Udit Kapahi
Vous pouvez utiliser
getActivity()
, qui renvoie à l'activité associée à un fragment.Ainsi, votre code sera le suivant:
OriginalL'auteur zaingz