EditText
ある種のオートフィル機能を紹介したい分野があります。私が現在やろうとしているのは、「S」ボタンが押された場合にEditTextボックスに「SpecialCT」を入力することだけです。これは私が持っているものです:
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ボタンを押すと、EnterボタンのKEY PRESSED
前に押したさまざまなキーの数に関係なく、ログ呼び出しが2回表示されます。
編集
それで、もう少しいじった後、Log
呼び出しが2回表示される理由は、Enterキーを離したときにも表示されるためであることに気付きました。ログ呼び出しを呼び出すためのSキーも取得しましたが、KEY PRESSED
それでも認識されませんIf statement
。