setOnclickListener初始化两次?

时间:2013-09-04 10:15:20

标签: android

passCode1 = (EditText) findViewById(R.id.passCode1);

    passCode1.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
             if(keyCode == KeyEvent.KEYCODE_DEL){  
                 passCode1.requestFocus();
                 }
            return false;
        }
    });

我在oncreate方法中有上面的代码我保留了断点并尝试调试我看到setOnKeyListner被调用或初始化两次。

3 个答案:

答案 0 :(得分:1)

        passCode1.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
             if(keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_UP){  
                 //passCode1.setText(null);
                 passCode1.requestFocus();
                 return true;
                 }
            return false;
        }
    });

添加关键事件解决了这个问题

我认为它是初始化的两倍,因为它可以创建用于键盘关键和关键操作

我是否添加了关键检查,但它仍然是初始化的两次,但仅限于使用

答案 1 :(得分:0)

试试这种方式

passCode1 = (EditText) findViewById(R.id.passCode1);

    passCode1.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
             if(keyCode == KeyEvent.KEYCODE_DEL){  
                 passCode1.requestFocus();
                  return true; // UPDATE HERE
                 }
            return false;
        }
    });

答案 2 :(得分:0)

如果你在if循环中得到keyListener事件,请尝试返回:

  @Override
 public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
                System.out.println("Return True.");
                return true;
            } else
            return false;
        }