在过去的三个小时里我一直在努力让这个工作,现在我需要你的帮助。我只想在用户单击“完成”时记录来自editText的文本:
e.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.v(TAG, "KEYCODE: " +keyCode);
Toast.makeText(MainActivity.this, "" +keyCode, Toast.LENGTH_SHORT).show();
if ((keyCode == EditorInfo.IME_ACTION_DONE) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
Log.v(TAG, "DONE!");
Toast.makeText(MainActivity.this, "" +e.getText(), Toast.LENGTH_LONG).show();
return false;
}
return false;
}
});
以下是XML:
<EditText
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignBottom="@+id/textView4"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_toRightOf="@+id/textView4"
android:layout_toEndOf="@+id/textView4"
android:imeOptions="actionDone"
android:inputType="text"
/>
问题是,我的
onKey
甚至没有显示任何祝酒词,而且当用户单击“完成”时,我无法获取用户输入我在if语句中尝试了很多改变,但是现在连onKey
都没有被调用我做错什么了?感谢您抽出时间回答我的问题:)
最佳答案
docs中回答了代码无法工作的原因。
不需要按下软输入方法来触发
此侦听器中的方法,实际上不鼓励这样做。这个
默认的android键盘不会为任何
以果冻豆或更高版本为目标的应用程序,并且只会传递它
对于一些针对冰淇淋三明治或
早期的。
如果在用户单击“完成”时尝试获取用户输入,可以尝试以下操作
e.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
Toast.makeText(MainActivity.this, e.getText(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});