私は Android アプリケーションに取り組んでおり、3 つの EditText を持つビューを持っています。私が達成しようとしているのは、最後の数字キーが押されたときに、そのアクティビティの okKey イベントを呼び出す必要があるということです。問題は、onKeyListener を設定した EditText では、getText メソッドも setText メソッドも機能しないことです。説明させてください:
空の文字列を初期化するとします
String string1 = "";
私の onCreate メソッドでは、EditTexts の 1 つで onKeyListener を設定します。
@Override
public void onCreate(Bundle savedInstanceState) {
...
findViewById(R.id.EditText3).setOnKeyListener(this);
...
}
ここで、オーバーライドする okKey メソッドに次のコードを記述すると、
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
string1 += ((EditText) findViewById(R.id.EditText1)).getText();
string1 += ((EditText) findViewById(R.id.EditText2)).getText();
string1 += ((EditText) findViewById(R.id.EditText3)).getText();
((EditText) findViewById(R.id.EditText1)).setText("");
((EditText) findViewById(R.id.EditText2)).setText("");
((EditText) findViewById(R.id.EditText3)).setText("");
}
return false;
}
EditText1 と EditText2 のみがクリアされ、EditText3 のテキストは string1 に連結されません。If ステートメントの条件を次のように置き換えると、
if (keyCode == KeyEvent.KEYCODE_ENTER)
次にEnterキーを押すと(Nextに設定)、期待どおりに機能します。アクティビティの onResume メソッドにも setText("") を追加しようとしましたが、結果に違いはありませんでした。私の質問を読んでくれてありがとう!
編集:「return false;」を追加 onKey メソッドの最後に、私は自分の仕事でそれを持っていましたが、この質問に入れるのを逃しました。クリスの答えに思い出されました。