2
   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

4

2 回答 2

4

在二进制...

10001 // 17
01111 // 15

...&运算符表示您要匹配bits两者的位置1

一点点看起来是这样的……

10001 // 17
01111 // 15
-----
00001 // 17 & 15

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

于 2012-09-09T22:26:10.673 回答
2

它是一个按位运算符(按位与),可以简短地描述如下:

0110 & 1101 = 0100

有关更多信息,请查看教程。

于 2012-09-09T22:27:38.727 回答