Android:将TextView的字体设置为NORMAL会导致崩溃

时间:2014-10-06 20:08:36

标签: android typeface

我有一个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);

1 个答案:

答案 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.DEFAULTTypeface.DEFAULT_BOLD是普通和粗体样式的默认字体。这种方式getTypeface不会返回NULL并且您将明确设置-default-字体。