首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按下软键盘上的Enter键不会触发事件

按下软键盘上的Enter键不会触发事件
EN

Stack Overflow用户
提问于 2017-02-20 22:11:38
回答 1查看 297关注 0票数 0

当我从软键盘按回车键时,我想触发搜索,但它不起作用。如果在物理键盘上按enter键(通过模拟器),则可以正常工作。也许我是错误的倾听者?

代码语言:javascript
复制
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    readJson();
    final View view= inflater.inflate(R.layout.fragment_main, container, false);

    EditText search = (EditText) view.findViewById(R.id.search_view);
    search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                    actionId == EditorInfo.IME_ACTION_DONE ||
                    actionId == EditorInfo.IME_ACTION_GO ||
                    event.getAction() == KeyEvent.ACTION_DOWN &&
                            event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                if (!event.isShiftPressed()) {
                    int found=0;
                   String inserted = v.getText().toString();
                    for(int i=0;i<city_list.size();i++){
                        if(inserted.equalsIgnoreCase(city_list.get(i).get("name").toString())){
                            found=1;
                            TextView id = (TextView) view.findViewById(R.id.city_id);
                            id.setText(city_list.get(i).get("id").toString());
                            TextView lat = (TextView) view.findViewById(R.id.city_lat);
                            lat.setText(city_list.get(i).get("lat").toString());
                            TextView lon = (TextView) view.findViewById(R.id.city_long);
                            lon.setText(city_list.get(i).get("lon").toString());
                        }
                    }

                    if(found==0) {
                        Toast.makeText(getContext(), "City not found", Toast.LENGTH_SHORT).show();
                    }
                    InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                    inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
                    return true; // consume.
                }
            }
            return false; // pass on to other listeners.
        }
    });

还尝试过:

代码语言:javascript
复制
search.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN &&
                            keyCode == KeyEvent.KEYCODE_ENTER)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-20 22:28:11

尝试将以下代码添加到R.id.search_view

代码语言:javascript
复制
android:imeOptions="actionSearch" 
android:inputType="text"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42346832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档