2014-10-06 112 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-字體。

相關問題