为什么我不能写文字?

时间:2016-05-04 02:25:18

标签: java android xml string algorithm

我一直试图让这个工作在最后三个小时,我现在需要你的帮助。我只想在用户点击"完成"

时记录我的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也没有被调用。我做错了什么?

感谢您抽出宝贵时间回答我的问题:)

1 个答案:

答案 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;
    }
});