我有一个toggleButton。如果选中该按钮,我将textView的字体设置为BOLD,如果未选中,则应为NORMAL。在我将其设置为NORMAL后,检查它是否使用isBold()方法加粗。出现了nullpointerexception。 奇怪的是:如果我将它设置为ITALIC或BOLD,则没有例外......
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);
答案 0 :(得分: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-字体。