2014-10-06 2 views
0

У меня есть toggleButton. Если кнопка отмечена, я устанавливаю шрифт textView в BOLD, и если он не установлен, он должен быть НОРМАЛЬНЫМ. После того, как я установил его в NORMAL, я проверяю, выделен ли он с помощью метода isBold(). Наступает исключение nullpointer. Weird: если я установить его Курсив или BOLD не исключение ...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.DEFAULT и Typeface.DEFAULT_BOLD являются шрифтами по умолчанию для нормальных и смелых стилей. Таким образом, getTypeface не вернет NULL, и вы явно установите шрифт -default-typeface.

Смежные вопросы