java - Null Pointer Exception - What did I not initialize? -


i making simple reminder app. getting null pointer exception when reminder goes off.

here key info logcat: caused by: java.lang.nullpointerexception @ com.joshbgold.move.alarmreceiver.onreceive(alarmreceiver.java:34)

evidently not initializing alarmactivity inst properly. know simple fix, patience newer java programmer.

alarmreceiver.java:  import android.app.activity; import android.content.componentname; import android.content.context; import android.content.intent; import android.media.mediaplayer; import android.support.v4.content.wakefulbroadcastreceiver;  /**  * created joshg on 7/6/2015.  */  public class alarmreceiver extends wakefulbroadcastreceiver {      @override     public void onreceive(final context context, intent intent) {         //mediaplayer used play mp3 file         final mediaplayer mediaplayer = mediaplayer.create(context, r.drawable.om_mani_short);          mediaplayer.setoncompletionlistener(new mediaplayer.oncompletionlistener() {              @override             public void oncompletion(mediaplayer mediaplayer) {                 mediaplayer.stop();                 mediaplayer.release();             }         });          mediaplayer.start();          //this update ui message         alarmactivity inst = alarmactivity.instance();         inst.setalarmtext("stretch");          //this send notification message         componentname comp = new componentname(context.getpackagename(),                 alarmservice.class.getname());         startwakefulservice(context, (intent.setcomponent(comp)));         setresultcode(activity.result_ok);     }  } 

alarmactivity.java:

package com.joshbgold.move;  import android.app.activity; import android.app.alarmmanager; import android.app.pendingintent; import android.content.intent; import android.media.mediaplayer; import android.os.bundle; import android.util.log; import android.view.view; import android.widget.button; import android.widget.textview; import android.widget.timepicker; import android.widget.togglebutton;  import java.util.calendar;  /**  * created joshg on 7/6/2015.  */ public class alarmactivity extends activity {      alarmmanager alarmmanager;     private pendingintent pendingintent;     private timepicker alarmtimepicker;     private static alarmactivity inst;     private textview alarmtextview;      public static alarmactivity instance() {         return inst;     }      @override     public void onstart() {         super.onstart();         inst = this;     }      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         alarmtimepicker = (timepicker) findviewbyid(r.id.alarmtimepicker);         alarmtextview = (textview) findviewbyid(r.id.alarmtext);         togglebutton alarmtoggle = (togglebutton) findviewbyid(r.id.alarmtoggle);         final button exitbutton = (button) findviewbyid(r.id.exitbutton);         alarmmanager = (alarmmanager) getsystemservice(alarm_service);          final mediaplayer mediaplayer = mediaplayer.create(this, r.drawable.om_mani_short);        mediaplayer.setoncompletionlistener(new mediaplayer.oncompletionlistener() {              @override             public void oncompletion(mediaplayer mediaplayer) {                 mediaplayer.stop();                 mediaplayer.release();             }         });          mediaplayer.start();          view.onclicklistener quitapp = new view.onclicklistener() {  //this block stops music when exiting             @override             public void onclick(view view) {                  if (mediaplayer != null) try {                     if (mediaplayer.isplaying()) {                         mediaplayer.stop();                         mediaplayer.release();                     }                 } catch (exception e) {                     log.d("alarm activity", e.tostring());                 }                  finish();             }         };          exitbutton.setonclicklistener(quitapp);     }      public void ontoggleclicked(view view) {         if (((togglebutton) view).ischecked()) {             log.d("myactivity", "alarm on");             calendar calendar = calendar.getinstance();             calendar.set(calendar.hour_of_day, alarmtimepicker.getcurrenthour());             calendar.set(calendar.minute, alarmtimepicker.getcurrentminute());             intent myintent = new intent(alarmactivity.this, alarmreceiver.class);             pendingintent = pendingintent.getbroadcast(alarmactivity.this, 0, myintent, 0);             alarmmanager.set(alarmmanager.rtc, calendar.gettimeinmillis(), pendingintent);         } else {             alarmmanager.cancel(pendingintent);             setalarmtext("alarm off");             log.d("myactivity", "alarm off");         }     }      public void setalarmtext(string alarmtext) {         alarmtextview.settext(alarmtext);     } } 

alarm service.java

package com.joshbgold.move;  import android.app.intentservice; import android.app.notificationmanager; import android.app.pendingintent; import android.content.context; import android.content.intent; import android.support.v4.app.notificationcompat; import android.util.log;  /**  * created joshg on 7/6/2015.  */ public class alarmservice extends intentservice {     private notificationmanager alarmnotificationmanager;      public alarmservice() {         super("alarmservice");     }      @override     public void onhandleintent(intent intent) {         sendnotification("stretch");     }      private void sendnotification(string msg) {         log.d("alarmservice", "preparing send notification...: " + msg);         alarmnotificationmanager = (notificationmanager)                 .getsystemservice(context.notification_service);          pendingintent contentintent = pendingintent.getactivity(this, 0,                 new intent(this, alarmactivity.class), 0);          notificationcompat.builder alarmnotificationbuilder = new notificationcompat.builder(                 this).setcontenttitle("reminder").setsmallicon(r.mipmap.ic_launcher)                 .setstyle(new notificationcompat.bigtextstyle().bigtext(msg))                 .setcontenttext(msg);           alarmnotificationbuilder.setcontentintent(contentintent);         alarmnotificationmanager.notify(1, alarmnotificationbuilder.build());         log.d("alarmservice", "notification sent.");     } } 

here contents of logcat. have set log level of error:

07-07 18:53:13.119  13065-13065/com.joshbgold.move e/﹕ mali: revision=linux-r3p2-01rel2 build_date=mon nov 18 21:41:36 kst 2013 07-07 19:00:11.569  16746-16746/com.joshbgold.move e/androidruntime﹕ fatal exception: main     java.lang.runtimeexception: unable start receiver com.joshbgold.move.alarmreceiver: java.lang.nullpointerexception             @ android.app.activitythread.handlereceiver(activitythread.java:2469)             @ android.app.activitythread.access$1600(activitythread.java:158)             @ android.app.activitythread$h.handlemessage(activitythread.java:1372)             @ android.os.handler.dispatchmessage(handler.java:99)             @ android.os.looper.loop(looper.java:176)             @ android.app.activitythread.main(activitythread.java:5365)             @ java.lang.reflect.method.invokenative(native method)             @ java.lang.reflect.method.invoke(method.java:511)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:869)             @ dalvik.system.nativestart.main(native method)      caused by: java.lang.nullpointerexception             @ com.joshbgold.move.alarmreceiver.onreceive(alarmreceiver.java:34)             @ android.app.activitythread.handlereceiver(activitythread.java:2462)             at android.app.activitythread.access$1600(activitythread.java:158)             at android.app.activitythread$h.handlemessage(activitythread.java:1372)             at android.os.handler.dispatchmessage(handler.java:99)             at android.os.looper.loop(looper.java:176)             at android.app.activitythread.main(activitythread.java:5365)             at java.lang.reflect.method.invokenative(native method)             at java.lang.reflect.method.invoke(method.java:511)             at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102)             at com.android.internal.os.zygoteinit.main(zygoteinit.java:869)             at dalvik.system.nativestart.main(native method) 

if class, line 34

 inst.setalarmtext("stretch"); 

which points line above not getting actual activity

alarmactivity inst = alarmactivity.instance(); 

check alarmactivity class make sure inst not null when created instance() method.

can post alarmactivity class see how creating/fetching instance?


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -