android - NullPointerException inside AbsListView -
i have amazing exception in listview outside of appication. i've read can caused mine adapter, returns null. adapter checks it:
public view getview(int position, view convertview, viewgroup parent) { view view = convertview; smsholder v; if(view == null) { if(mainactivity.debug) { view = linflater.inflate(r.layout.sms_list_item_debug, parent, false); } else { view = linflater.inflate(r.layout.sms_list_item, parent, false); } } v = (smsholder) view.gettag(r.id.screenholder); sms sms = getsms(position); v.date.settext(zendate.format(zendate.format_rus_dm, sms.time_stamp * 1000)); v.sender.settext(sms.sender + " "); v.text.settext(sms.text + " "); v.selector.setoncheckedchangelistener(null); v.selector.setchecked(checked.contains(sms._id)); v.status.settag(sms); v.selector.settag(position); boolean smsparsed = sms.parsed != null && sms.checkflag(sms.flag_sender_ok) && sms.checkflag(sms.flag_format_ok) && sms.checkflag(sms.flag_account_ok); if(smsparsed) { v.status_bg.setvisibility(view.gone); } else { v.status_bg.setvisibility(view.visible); if (sms.checkflag(sms.flag_format_ok)) { v.status.setenabled(false); } else { v.status.setenabled(true); } v.status.settext(getsmsstatus(sms)); v.status.seteventlistener(new contextmenu.eventlistener() { @override public void onitemselected(contextmenu v, int index) { sms sms = (sms) v.gettag(); if (index == 0) { intent = new intent(intent.action_send); i.settype("message/rfc822"); i.putextra(intent.extra_email , new string[]{"support@zenmoney.ru", ""}); string subj = getsmsstatus(sms) + "["+ zenmoney.getversionname()+"]"; i.putextra(intent.extra_subject, subj); string text = context.getstring(r.string.sms_mail); i.putextra(intent.extra_text, string.format(text, sms.sender, sms.text)); try { = intent.createchooser(i, context.getstring(r.string.sms_app_choose)); i.addflags(intent.flag_activity_new_task); context.startactivity(i); } catch (android.content.activitynotfoundexception ex) { toast.maketext(context, context.getstring(r.string.no_apps), toast.length_short).show(); } } else if (mainactivity.debug && index == 1) { intent = new intent(context, smstestactivity.class); i.putextra("sms_sender", sms.sender); i.putextra("sms_body", sms.text); context.startactivity(i); } } @override public void onclick(view view) { //to change body of implemented methods use file | settings | file templates. } }); } v.selector.setoncheckedchangelistener(new compoundbutton.oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton v, boolean ischecked) { // todo auto-generated method stub integer position = (integer) v.gettag(); sms sms = smslist.get(position); long id = sms._id; if (!ischecked) { checked.remove(id); } else if (!checked.contains(id)) { checked.add(id); } if (checked.size() > 0) { smsscreen.showbottomcab(); } else { smsscreen.hidebottomcab(); } } }); if (view == null) { zenmoney.uncaughtexception(new nullpointerexception()); } return view; } here error log:
error/androidruntime(4393): fatal exception: main java.lang.nullpointerexception @ android.widget.abslistview.obtainview(abslistview.java:1482) @ android.widget.listview.makeandaddview(listview.java:1786) @ android.widget.listview.filldown(listview.java:705) @ android.widget.listview.fillfromtop(listview.java:762) @ android.widget.listview.layoutchildren(listview.java:1639) @ android.widget.abslistview.onlayout(abslistview.java:1310) @ android.view.view.layout(view.java:7224) @ android.support.v4.view.viewpager.onlayout(viewpager.java:1528) @ android.view.view.layout(view.java:7224) @ android.widget.linearlayout.setchildframe(linearlayout.java:1290) @ android.widget.linearlayout.layoutvertical(linearlayout.java:1166) @ android.widget.linearlayout.onlayout(linearlayout.java:1083) @ android.view.view.layout(view.java:7224) @ android.widget.linearlayout.setchildframe(linearlayout.java:1290) @ android.widget.linearlayout.layoutvertical(linearlayout.java:1166) @ android.widget.linearlayout.onlayout(linearlayout.java:1083) @ android.view.view.layout(view.java:7224) @ android.widget.relativelayout.onlayout(relativelayout.java:943) @ android.view.view.layout(view.java:7224) @ android.widget.framelayout.onlayout(framelayout.java:369) @ android.view.view.layout(view.java:7224) @ android.widget.linearlayout.setchildframe(linearlayout.java:1290) @ android.widget.linearlayout.layouthorizontal(linearlayout.java:1279) @ android.widget.linearlayout.onlayout(linearlayout.java:1085) @ android.view.view.layout(view.java:7224) @ android.widget.framelayout.onlayout(framelayout.java:369) @ android.view.view.layout(view.java:7224) @ com.slidingmenu.lib.customviewabove.onlayout(customviewabove.java:426) @ android.view.view.layout(view.java:7224) @ android.widget.relativelayout.onlayout(relativelayout.java:943) @ android.view.view.layout(view.java:7224) @ android.widget.framelayout.onlayout(framelayout.java:369) @ android.view.view.layout(view.java:7224) @ android.view.viewroot.performtraversals(viewroot.java:1181) @ android.view.viewroot.handlemessage(viewroot.java:1913) @ android.os.handler.dispatchmessage(handler.java:130) @ android.os.looper.loop(sourcefile:351) @ android.app.activitythread.main(activitythread.java:3820) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:538) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:969) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:727) @ dalvik.system.nativestart.main(native method) question is: why error occur , how can avoid it?
updated: problem solved. got confused in adapters , used one. sorry :)
this happens because check whether pointer null , if throw nullpointerexception anyway. need sensible case pointer null instead of throwing nullpointerexception. otherwise might not check.
Comments
Post a Comment