リターンキーのリスナーを使用して作成フィールドを初期化したいとします。ドキュメントでは、入力キーが押されたために呼び出されている場合、actionId
はEditorInfo.IME_NULL
となります。私はその値に対してactionId
を比較しました。また、戻りキーによってトリガーされた場合、私たちはKeyEvent
オブジェクトを受け取るので、キーのリリースに対応する値であるKeyEvent.ACTION_UP
をテストします。 コードを実行すると、KitKatを実行しているデバイスでうまく動作しますが、実行中の他のLollilopでは戻りキーを使用せず、onEditorAction()
も呼び出されません。新しい行を挿入するだけです。ここでは、コードがあります:EditTextのリターンキーのAndroidリスナーがすべてのデバイスで機能しない
public void setupChat() {
Log.i(LOG_TAG, "setupChat()");
oETConversation.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.i(LOG_TAG, "onEditorAction()");
if (actionId == EditorInfo.IME_NULL && event.getAction() == KeyEvent.ACTION_UP) {
String s = v.getText().toString();
sendMessage(s);
}
return true;
}
});
}
public void sendMessage(String s) {
Log.i(LOG_TAG, "sendMessage()");
Log.i(LOG_TAG, s);
}
これは、KitKatを実行しているデバイスでは動作しますが(代わりに新しい行が追加されます)、API 25を実行する仮想デバイスで動作します。Lollipopでは同じ問題があり、メソッド(onkey()この場合) –
更新された回答を確認@power_output – Jiyeh
ロリポップでも動作します!それでも私はそれが前に方法を呼んでいたことに興味をそそられています。どういう理由ですか? –