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被调用或初始化两次。
答案 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; }