1

我有一个带有编辑文本的对话框。我想在用户在键盘中单击完成时执行一项操作。我的代码看起来像

我的编辑文本 xml 看起来像

<EditText
            android:id="@+id/commondialog_userinput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:imeOptions="actionDone"
            android:selectAllOnFocus="true"
            android:inputType="text" />

并且添加的侦听器是

final EditText inputField = (EditText)dialog.findViewById(R.id.commondialog_userinput);
            inputField.setInputType(EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
            inputField.setText(AndroidGlobalVariables.getDocumentName(), TextView.BufferType.EDITABLE);// No I18N
            inputField.setFocusableInTouchMode(true);
            inputField.requestFocus();
            inputField.selectAll();

        inputField.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // If the event is a key-down event on the "enter" button
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                    Toast.makeText(EditorActivity.getActivity(), inputField.getText(),Toast.LENGTH_SHORT).show();
                    return true;
                }
                return false;
            }

        }); 
4

3 回答 3

2

将 setOnEditorActionListener 用于您想要在键盘上执行操作的 EditText,如下所示:

 your_editText.setOnEditorActionListener(new OnEditorActionListener() {

    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE)
                {
                      ** PUT YOUR ACTION HERE !!! **
                }
        return false;
    }
});
于 2013-03-27T10:28:36.180 回答
0

您需要的是http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_ACTION_DONE。不同的 Android 实现和版本可能使用不同的键,您不能依赖“Enter”键码。

于 2013-03-27T10:27:00.920 回答
0

将此用于编辑文本侦听器

e_inputField .setOnEditorActionListener(new OnEditorActionListener() {

                public boolean onEditorAction(TextView arg0,
                        int actionId, KeyEvent arg2) {
                    // TODO Auto-generated method stub

                    if (actionId == EditorInfo.IME_ACTION_NEXT) {
                        //do your stuff here

                    }
                    return false;
                }
            });
于 2013-03-27T10:33:54.540 回答