我一直试图让这个工作在最后三个小时,我现在需要你的帮助。我只想在用户点击"完成"
时记录我的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
也没有被调用。我做错了什么?
感谢您抽出宝贵时间回答我的问题:)
答案 0 :(得分:3)
docs。
回答了为什么您的代码无效按下软输入法不需要触发 这个监听器中的方法,实际上不鼓励这样做。该 默认的android键盘不会触发任何键的任何键 应用程序目标是Jelly Bean或更高版本,并且只会提供它 对于一些按键应用于目标冰淇淋三明治或 早。
如果您在点击完成后尝试获取用户输入,则可以尝试类似
的内容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;
}
});