在Android片段的搜索界面中处理Key ENTER事件的问题

Issue in handling Key ENTER event in search interface of an android fragment

我在我的一个片段中使用搜索界面。 我想在搜索界面的edittext中处理"Enter KeyEvent"。每当用户在搜索的edittext中按Enter键时我想做那个时间的事情。 我可以使用onTextSubmit()方法但是当edittext为空时它没有检测到回车键按下事件。

但是我想在编辑文本为空时处理回车键事件。有人可以帮我吗?


在这里,我使用了它们,

首先是Enter键执行某项任务,同时单击Enter。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  <EditText android:imeOptions="actionDone"
        android:inputType="text"/>

    editText.setOnKeyListener(new OnKeyListener()
    {
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            if (event.getAction() == KeyEvent.ACTION_DOWN)
            {
                switch (keyCode)
                {
                    case KeyEvent.KEYCODE_DPAD_CENTER:
                    case KeyEvent.KEYCODE_ENTER:
                        addCourseFromTextBox();
                        return true;
                    default:
                        break;
                }
            }
            return false;
        }
    });

其次是Search键搜索某些文本。

1
2
3
4
5
6
7
8
9
10
11
12
13
<EditText android:imeOptions="actionSearch"
    android:inputType="text"/>

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            performSearch();
            return true;
        }
        return false;
    }
});

详细了解所有imeOptions。


你可以这样检查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
yourEditView.setOnKeyListener(new 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)) {
                // Perform action on Enter key press
                if(yourEditView.isEmpty()&&yourEditView.lengh()==0){
                  // Perform your task here
                }
                return true;
            }
            return false;
        }
    });