我有一个EditText
字段,我想在上面介绍某种自动填充功能。如果按下“S”按钮,我目前要做的就是用“特殊 CT”填充 EditText 框。这就是我所拥有的:
ctEditText = (EditText) findViewById( 1001 );
ctEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.i( "KEY", "PRESSED" );
// if keydown and "enter" is pressed
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
return true;
} else if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_S)) {
Log.i( "KEY", "S" );
if( ctEditText.getText().toString().length() == 1 ) {
ctEditText.setText( "Special CT" );
}
return true;
}
return false;
}
});
使用此代码,按“S”按钮对我完全没有任何作用。在我按下键盘右下角的 Enter 按钮之前,我的 LogCat 不会显示我的任何一个 LogCall。当我按下 enter 按钮时,它会显示KEY PRESSED
两次日志调用,无论我在 enter 按钮之前按下了多少个不同的键。
编辑
因此,在搞砸了一些之后,我意识到Log
呼叫出现两次的原因是因为它也在我释放回车键时出现。我也得到了 S 键来调用KEY PRESSED
日志调用,但在我的If statement
.