在过去的三个小时里我一直在努力让这个工作,现在我需要你的帮助。我只想在用户单击“完成”时记录来自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;
    }
});

09-05 04:38