2014-10-06 82 views
0

我有一个toggleButton。如果按钮被选中,我将textView的字体设置为BOLD,如果没有选中,它应该是NORMAL。将其设置为NORMAL后,我使用isBold()方法检查它是否为粗体。这里出现了nullpointerexception。 奇怪的是:如果我将它设置为斜体或加粗没有例外......Android:将TextView的字体设置为NORMAL会导致崩溃

 if(toggleButton.isChecked()){ 
      textViews.get(selectedId).setTypeface(null, Typeface.BOLD); 
     }else{ 
      textViews.get(selectedId).setTypeface(null, Typeface.NORMAL); //When I set it here to ITALIC everything works fine 
     } 
     //Check where error occurs 
     TextView textView=textViews.get(selectedId); 
     Typeface typeface=textView.getTypeface(); 
     boolean isBold=typeface.isBold();  //Here is the nullpointerexception 
     System.out.println("isBold "+isBold); 

回答

1

的字体确实NULL,因为你明确地设定,所以getTypeface回报NULL。你可以做一个细微的变化,使其工作:

if(toggleButton.isChecked()){ 
    textViews.get(selectedId).setTypeface(Typeface.DEFAULT_BOLD, Typeface.BOLD); 
}else{ 
    textViews.get(selectedId).setTypeface(Typeface.DEFAULT, Typeface.NORMAL); //When I set it here to ITALIC everything works fine 
} 

Typeface.DEFAULTTypeface.DEFAULT_BOLD是正常的,大胆的样式的默认字体。这样getTypeface将不会返回NULL,并且您将显式设置-default-字体。