【问题标题】:How can I convert a key code into a char or string?如何将键码转换为字符或字符串?
【发布时间】:2011-09-28 02:28:41
【问题描述】:

如何将keycode 转换为charstring??

示例代码如下:

public boolean onKey(View v, int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    //Log.d("EditText", "It's Working...!" + event.getAction());
    if (event.getAction() == 0) {
        switch (v.getId()) {
        case R.id.editText1:
            Log.d("EditText", "In editText1");
            if (text1.length() == 3)
            {
                text2.setText();
                text2.requestFocus();

            }
            break;

        case R.id.editText2:
            Log.d("EditText", "In editText2");
            if (text2.length() == 0)
                text1.requestFocus();
            break;
        }
    }

    return false;
}

【问题讨论】:

    标签: android keycode typeconverter


    【解决方案1】:
    char unicodeChar = (char)event.getUnicodeChar();
    

    【讨论】:

    • 为什么我在输入 keyevent 67 (KEYCODE_DEL) 时得到��?
    • 如果你得到这样的输出��。如果 (keyCode != 59) 以这种方式过滤
    • 请注意,您不需要 KeyEvent 引用来执行此操作。您可以使用 KeyCharacterMap 转换纯键码 int 值。这基本上是getUnicodeChar() 所做的。
    • getUnicodeChar() 现在需要一个参数,该代码不能那样工作
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      如果您没有 KeyEvent 对象,您可以在键码上使用它:

      public void onKey(int primaryCode, int[] keyCodes) {
           char c = Character.toChars(primaryCode)[0];
      }
      

      【讨论】:

        【解决方案4】:

        Tod 的回答差不多完成了,但是当你想用这个事件代码设置编辑文本的文本时,你应该添加一点东西:

        sample_et.setText((char)event.getUnicodeChar()+"");
        

        【讨论】:

          【解决方案5】:

          如果您想将一个键从一个控件发送到另一个控件(例如,从其中的RecylerViewEditText),您可以使用this

          editText.dispatchKeyEvent(KeyEvent(0, 0, KeyEvent.ACTION_DOWN, keyCode, 0))
          editText.dispatchKeyEvent(KeyEvent(0, 0, KeyEvent.ACTION_UP, keyCode, 0))
          

          【讨论】:

            【解决方案6】:

            试试这个..

            String s="";
            
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                EditText t=(EditText)v;
                s=t.getText();  
                return false;
            }
            

            【讨论】:

              【解决方案7】:

              使用

              String.fromCharCode();
              

              String.fromCharCode(65,66,67) 返回ABC

              https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-10-05
                • 2011-02-23
                • 1970-01-01
                • 2013-03-02
                • 1970-01-01
                • 2020-02-22
                相关资源
                最近更新 更多