switch (attribute.inputType & EditorInfo.TYPE_MASK_CLASS) {
            case EditorInfo.TYPE_CLASS_NUMBER:
            case EditorInfo.TYPE_CLASS_DATETIME:
            case EditorInfo.TYPE_CLASS_PHONE:
                mCurKeyboard = mSymbolsKeyboard;
                break;

            case EditorInfo.TYPE_CLASS_TEXT:
                mCurKeyboard = mQwertyKeyboard;
        }

这是什么意思?
我的测试结果是:
attribute.inputType = 17
EditorInfo.TYPE_MASK_CLASS = 15

它切换到case EditorInfo.TYPE_CLASS_TEXT= 1

最佳答案

二进制的…

10001 // 17
01111 // 15

…运算符表示要匹配&,其中两者都是bits
有点像这样…
10001 // 17
01111 // 15
-----
00001 // 17 & 15

只有两个数字的最后一个1匹配为bit

07-26 08:15