Android 字体会自动重置吗?安卓工作室

Android 字体会自动重置吗?安卓工作室,android,android-typeface,Android,Android Typeface,我有自己的函数调用,它根据字符串选择类型face Typeface typeface = getTypeface (activity, fontFamily); Typeface getTypeface (Activity activity, String fontName) { Typeface type = null; if (fontName.equals("droidsans") || fontName.equals("normal")) { type

我有自己的函数调用,它根据字符串选择类型face

Typeface typeface = getTypeface (activity, fontFamily);
Typeface getTypeface (Activity activity, String fontName) {
    Typeface type = null;

    if (fontName.equals("droidsans") || fontName.equals("normal")) {
        type = Typeface.SANS_SERIF;
    } else if (fontName.equals("droidserif") || fontName.equals("serif")) {
        type = Typeface.SERIF;
    } else if (fontName.equals("droidsansmono") || fontName.equals("monospace")) {
        type = Typeface.MONOSPACE;
    } else {
        type = Typeface.SANS_SERIF;
    }
    return type;
}
然而,当断点命中type=Monospace it或Serif时,这是相当简单的。断点将返回到type=Sans\u serif

从而使我的字体面等于无衬线而不是单空格

为什么它有时会这样做

试试这个

 fontName.toLowerCase().equal("monospace")

我设法找到了解决办法。我将elseif语句更改为Switch语句。似乎字体可能有一些奇怪的问题,如果

   switch(fontName)
        {
            case "droidsansmono":
            case "monospace":
                type = Typeface.MONOSPACE;
                break;
            case "droidserif":
            case "serif":
                type = Typeface.SERIF;
                break;
            default:
                type =  Typeface.SANS_SERIF;
                break;
        }
         return type;

这解决了
type=Typeface.SERIF
跳入
type=Typeface.SANS\u SERIF的问题与原始if语句代码

它击中了monospace,所以类型首先被铸造为monospace,然后断点返回到前面的if语句。你有没有检查实际值?如果您使用调试器一步一步地检查代码,您可能会看到奇怪的“跳跃”,尤其是在优化代码时。就是说,当调试器无法准确地将位置与源代码行匹配时。嗨,Henry,我确实看到了奇怪的“跳跃”(我该如何修复它?),当我检查值时,它与奇怪的跳跃所建议的匹配。因此,它有时会从
type=Typeface.MONOSPACE
type=Typeface.SANS\u衬线最终结果是
type=Typeface.SANS\u SERIFsadface