Java 覆盖Numpad_点

Java 覆盖Numpad_点,java,android,onkeydown,textchanged,Java,Android,Onkeydown,Textchanged,我有4个编辑文本八位字节1,oct2,oct3,oct4。这些编辑文本的类型为numberDecimal。我最初关注的是oct1。我需要它,因此当用户按下(numpad点)时,它将不输入oct,清除焦点并聚焦到下一个编辑文本 这应该很容易,但对我来说却令人沮丧。这就是我尝试过的 覆盖onKeyDown。这甚至不会产生日志 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyC

我有4个编辑文本<代码>八位字节1,
oct2
oct3
oct4
。这些编辑文本的类型为
numberDecimal
。我最初关注的是
oct1
。我需要它,因此当用户按下
(numpad点)时,它将输入
oct,清除焦点并聚焦到下一个编辑文本

这应该很容易,但对我来说却令人沮丧。这就是我尝试过的

覆盖
onKeyDown
。这甚至不会产生日志

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
       if(keyCode == KeyEvent.KEYCODE_NUMPAD_DOT){
          oct3.clearFocus();
          oct4.requestFocus();
          return true;
       }
       Log.d("KeyCode", String.valueOf(keyCode));
       Log.d("event", String.valueOf(event));
       return false;
}
然后这个。我有很多不同的版本。我已经能够用它切换焦点,但不能删除

    oct3.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            //do nothing
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(count > 0){
                if(s.charAt(s.length()-1) == ".".charAt(0)){

                    Log.d("Sequence", "Noticed a \".\"");
                    isPeriod = true;
                } else {
                    Log.d("Sequence", "Noticed a \""+s+"\"");
                }
            }

        }

        @Override
        public void afterTextChanged(Editable s) {
            if(isPeriod){
                s.delete(s.length() -1, s.length() -1);
                oct3.clearFocus();
                isPeriod = false;
                oct4.requestFocus();
            }
        }
    });

尝试在
onTextChanged
中设置它:

  listener = (new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(count > 0){
                if(s.charAt(s.length()-1) == '.'){
                    Log.d("Sequence", "Noticed a \".\"");
                    CharSequence text = s.subSequence(0, s.length()-1);
                    Log.d("VIEW CLICKED:", String.valueOf(getCurrentFocus()));
                    setTextAndAdvance(getCurrentFocus(), text);
                } else {
                    Log.d("Sequence", "Noticed a \""+s+"\"");
                }
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });