android - API11 (and now12) and Spannable causing runtime NPE -


update 14th may

it's mix of text sizes breaks it, if replace

<item name  = "android:textsize">16sp</item>  

with change of colour like

<item name="android:textcolor">#00ff00</item> 

then runs ok.

the references textline,measure in logcat should have given me clue. i'd still fix though, i'm sure others have requirement mix of sizes in single text line.

udpdated 12 may - minimal code example shown @ end of post

code works fine under sdk 2.everything, throws null pointer exception when run in 3.0 emulator. i've narrowed down occurrence of spannablestring in code. i'm using put text of differing font sizes in banner area @ top of screen. logcat is:

fatal exception: main java.lang.nullpointerexception     @ android.text.style.textappearancespan.updatedrawstate(textappearancespan.java:209)     @ android.text.textline.handlerun(textline.java:848)     @ android.text.textline.measurerun(textline.java:399)     @ android.text.textline.measure(textline.java:278)     @ android.text.textline.metrics(textline.java:252)     @ android.text.layout.measurepara(layout.java:1432)     @ android.text.layout.getdesiredwidth(layout.java:89)     @ android.text.layout.getdesiredwidth(layout.java:68)     @ android.widget.textview.onmeasure(textview.java:5713)     @ android.view.view.measure(view.java:10577)     @ android.widget.relativelayout.measurechildhorizontal(relativelayout.java:581)     @ android.widget.relativelayout.onmeasure(relativelayout.java:365)     @ android.view.view.measure(view.java:10577)     @ android.widget.relativelayout.measurechildhorizontal(relativelayout.java:581)     @ android.widget.relativelayout.onmeasure(relativelayout.java:365)     @ android.view.view.measure(view.java:10577)     @ android.widget.relativelayout.measurechildhorizontal(relativelayout.java:581)     @ android.widget.relativelayout.onmeasure(relativelayout.java:365)     @ android.view.view.measure(view.java:10577)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4270)     @ android.widget.framelayout.onmeasure(framelayout.java:267)     @ android.view.view.measure(view.java:10577)     @ android.widget.linearlayout.measurevertical(linearlayout.java:764)     @ android.widget.linearlayout.onmeasure(linearlayout.java:519)     @ android.view.view.measure(view.java:10577)     @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4270)     @ android.widget.framelayout.onmeasure(framelayout.java:267)     @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:1876)     @ android.view.view.measure(view.java:10577)     @ android.view.viewroot.performtraversals(viewroot.java:885)     @ android.view.viewroot.handlemessage(viewroot.java:1944)     @ android.os.handler.dispatchmessage(handler.java:99)     @ android.os.looper.loop(looper.java:126)     @ android.app.activitythread.main(activitythread.java:3997)     @ java.lang.reflect.method.invokenative(native method)     @ java.lang.reflect.method.invoke(method.java:491)     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:841)     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:599)     @ dalvik.system.nativestart.main(native method) 

the code in handler called timer, writes text view following essential lines (null checks etc omitted)

textview tvbanner = (textview) findviewbyid(r.id.reftext); ..... int startspan = altdispstr.indexof("\n"); int endspan = altdispstr.length(); spanrange = new spannablestring(altdispstr); spanrange.setspan(new textappearancespan(this,     r.style.custompoint), startspan, endspan,     spannable.span_exclusive_exclusive);  .... .... tvbanner.settext(spanrange); 

when trap in debugger (not easy 3.0 emulator , 3gb of ram) gets through handler method ok, - spanrange not null, npe , fc happens sometime later in main looper.

the textview (reftxt) in xml called infobar.xml included in main.xml. infobar's essential components are:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/bannerrelview" android:layout_alignparenttop="true" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:background="#800000ff" android:layout_width="wrap_content">     <textview        android:id="@+id/banneroptionsbutton"              android:layout_alignparentright="true"           ....           </textview>      <textview          android:id="@+id/bannergps"          android:layout_toleftof="@+id/banneroptionsbutton"              ....       </textview>       <textview          android:id="@+id/reftext"          android:layout_toleftof="@+id/bannergps"          ......       </textview> </relativelayout> 

if replace spannablestring plain old string app runs in 3.0 emulators. i'm wondering if there measures need take spannables , tablet devices?

when dies, debug perspective shows crash state - mt , tl both not null

update example i've reduced smallest code example demonstrates error, it's ok under 2.1 crashes same npe under 3.0

activity code:

public class spantest extends activity {     /** called when activity first created. */     @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.main);         string dispstr = "i'm first line\ni'm second line";         textview tvbanner = (textview) findviewbyid(r.id.textview1);         int startspan = dispstr.indexof("\n");         int endspan = dispstr.length();         spannable spanrange = new spannablestring(dispstr);         spanrange.setspan(new textappearancespan(this, r.style.custompoint), startspan, endspan, spannable.span_exclusive_exclusive);         tvbanner.settext(spanrange);     } } 

main.xml linearlayout containg 1 textview. styles.xml containing custompoint is:

<?xml version="1.0" encoding="utf-8"?> <resources>     <style         name="custompoint">         <item name="android:textsize">24sp</item>         <item name="android:textstyle">bold</item>     </style> </resources> 

.

your textview using textpaint object doesn't have linkcolor set. see style/theme using somehow not setting linkcolor. try adding linkcolor style , see if solves problem.

edit: should inherit default style, , give want. not sure why behavior changed 2.1 3.0, but...


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -