android - Getting NullPointerException in NFC-handling code -



android - Getting NullPointerException in NFC-handling code -

i got code handling nfc tags stackoverflow i'm getting nullpointerexception while running it:

public class mainactivity extends activity { nfcadapter adapter; pendingintent pendingintent; intentfilter writetagfilters[]; boolean writemode; tag mytag; context ctx; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); ctx = this; button btnwrite = (button) findviewbyid(r.id.button); final textview plateno = (textview)findviewbyid(r.id.plate_no); final textview model = (textview)findviewbyid(r.id.model); final textview chasis = (textview)findviewbyid(r.id.chasis_no); final textview engine = (textview)findviewbyid(r.id.engine_no); final textview duedate = (textview)findviewbyid(r.id.due_date); final textview rotexno = (textview)findviewbyid(r.id.rotex_no); btnwrite.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { seek { if (mytag == null) { toast.maketext(ctx, ctx.getstring(r.string.error_detected), toast.length_long ).show(); } else { write(plateno.gettext().tostring(),mytag); write(model.gettext().tostring(),mytag); write(chasis.gettext().tostring(),mytag); write(engine.gettext().tostring(),mytag); write(duedate.gettext().tostring(),mytag); write(rotexno.gettext().tostring(),mytag); toast.maketext(ctx, ctx.getstring(r.string.ok_writing), toast.length_long ).show(); } } grab (ioexception e) { toast.maketext(ctx, ctx.getstring(r.string.error_writing), toast.length_long ).show(); e.printstacktrace(); } grab (formatexception e) { toast.maketext(ctx, ctx.getstring(r.string.error_writing) , toast.length_long ).show(); e.printstacktrace(); } } }); adapter = nfcadapter.getdefaultadapter(this); pendingintent = pendingintent.getactivity(this, 0, new intent(this, getclass()).addflags(intent.flag_activity_single_top), 0); intentfilter tagdetected = new intentfilter(nfcadapter.action_tag_discovered); tagdetected.addcategory(intent.category_default); writetagfilters = new intentfilter[] { tagdetected }; } private void write(string text, tag tag) throws ioexception, formatexception { ndefrecord[] records = { createrecord(text) }; ndefmessage message = new ndefmessage(records); // instance of ndef tag. ndef ndef = ndef.get(tag); // enable i/o ndef.connect(); // write message ndef.writendefmessage(message); // close connection ndef.close(); } private ndefrecord createrecord(string text) throws unsupportedencodingexception { string lang = "en"; byte[] textbytes = text.getbytes(); byte[] langbytes = lang.getbytes("us-ascii"); int langlength = langbytes.length; int textlength = textbytes.length; byte[] payload = new byte[1 + langlength + textlength]; // set status byte (see ndef spec actual bits) payload[0] = (byte) langlength; // re-create langbytes , textbytes payload system.arraycopy(langbytes, 0, payload, 1, langlength); system.arraycopy(textbytes, 0, payload, 1 + langlength, textlength); ndefrecord recordnfc = new ndefrecord(ndefrecord.tnf_well_known, ndefrecord.rtd_text, new byte[0], payload); homecoming recordnfc; } @override protected void onnewintent(intent intent){ if (nfcadapter.action_tag_discovered.equals(intent.getaction())) { mytag = intent.getparcelableextra(nfcadapter.extra_tag); toast.maketext(this, this.getstring(r.string.ok_detection) + mytag.tostring(), toast.length_long ).show(); } } @override public void onpause(){ super.onpause(); writemodeoff(); } @override public void onresume(){ super.onresume(); writemodeon(); } private void writemodeon(){ writemode = true; adapter.enableforegrounddispatch(this, pendingintent, writetagfilters, null); } private void writemodeoff(){ writemode = false; adapter.disableforegrounddispatch(this); } }

this error message logcat:

04-11 14:21:15.020: e/androidruntime(1512): fatal exception: main 04-11 14:21:15.020: e/androidruntime(1512): process: com.example.nfcwrite, pid: 1512 04-11 14:21:15.020: e/androidruntime(1512): java.lang.runtimeexception: unable resume activity {com.example.nfcwrite/com.example.nfcwrite.mainactivity}: java.lang.nullpointerexception 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread.performresumeactivity(activitythread.java:2788) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread.handleresumeactivity(activitythread.java:2817) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2250) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread.access$800(activitythread.java:135) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread$h.handlemessage(activitythread.java:1196) 04-11 14:21:15.020: e/androidruntime(1512): @ android.os.handler.dispatchmessage(handler.java:102) 04-11 14:21:15.020: e/androidruntime(1512): @ android.os.looper.loop(looper.java:136) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread.main(activitythread.java:5017) 04-11 14:21:15.020: e/androidruntime(1512): @ java.lang.reflect.method.invokenative(native method) 04-11 14:21:15.020: e/androidruntime(1512): @ java.lang.reflect.method.invoke(method.java:515) 04-11 14:21:15.020: e/androidruntime(1512): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 04-11 14:21:15.020: e/androidruntime(1512): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 04-11 14:21:15.020: e/androidruntime(1512): @ dalvik.system.nativestart.main(native method) 04-11 14:21:15.020: e/androidruntime(1512): caused by: java.lang.nullpointerexception 04-11 14:21:15.020: e/androidruntime(1512): @ com.example.nfcwrite.mainactivity.writemodeon(mainactivity.java:149) 04-11 14:21:15.020: e/androidruntime(1512): @ com.example.nfcwrite.mainactivity.onresume(mainactivity.java:144) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.instrumentation.callactivityonresume(instrumentation.java:1192) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activity.performresume(activity.java:5310) 04-11 14:21:15.020: e/androidruntime(1512): @ android.app.activitythread.performresumeactivity(activitythread.java:2778) 04-11 14:21:15.020: e/androidruntime(1512): ... 12 more

according stacktrace in line

adapter.enableforegrounddispatch(this, pendingintent, writetagfilters, null);

you adapter null.

nfcadapter.getdefaultadapter(this); may homecoming null if no such adapter available. sure function supported on testing device?

android nfc

Comments

Popular posts from this blog

Using Android Volley to post an array to PHP -

python - How to add an model instance to a django queryset? -

angularjs - No 'Access-Control-Allow-Origin' error from local domain to public API -