android - 使用 Sherlock ActionBar SearchView setOnKeyListener 进行搜索

标签 android actionbarsherlock searchview

我正在尝试 ActionBarSherlock SearchView。 不幸的是

       public boolean onKey(View arg0, int arg1, KeyEvent event)

没有被解雇。 你知道原因吗? 我从这个帖子看到 SearchView imeOptions and onQueryTextSubmit support 用户以另一种方式解决了问题。也许我也应该这样做?

谢谢

这是我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //Used to put dark icons on light action bar
    boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light;

    //Create the search view
   final SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
    searchView.setQueryHint("Search for countries…");

    System.out.println("searchView.getQuery()"+searchView.getQuery());

    searchView.setOnKeyListener(new OnKeyListener()
    {
    /**
      * This listens for the user to press the enter button on
      * the keyboard and then hides the virtual keyboard
      */
           @Override
        public boolean onKey(View arg0, int arg1, KeyEvent event) {
        // If the event is a key-down event on the "enter" button

               System.out.println("--->"+searchView.getQuery());
        if ( (event.getAction() == KeyEvent.ACTION_DOWN ) &&
        (arg1 == KeyEvent.KEYCODE_ENTER) )
        {
        InputMethodManager imm = (InputMethodManager)     SearchViews.this.getSystemService(SearchViews.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(searchView.getWindowToken(), 0);
        return true;
        }
        return false;
        }



    } );

    menu.add("Search")
        .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.abs__ic_search)
        .setActionView(searchView)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    return true;
}

最佳答案

避免做这样的事情。使用 SearchView.OnQueryTextListener

final SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
searchView.setQueryHint("Search for countries..");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

    @Override
    public boolean onQueryTextChange(String newText) {
        return false;
    }


    @Override
    public boolean onQueryTextSubmit(String query) {
        if (query.length() != 0) {
            System.out.println("--->" + query);
            // handle search here
            return true;
        }
        return false;
    }
});

始终阅读 the docs

关于android - 使用 Sherlock ActionBar SearchView setOnKeyListener 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772464/

相关文章:

java - SimpleDateFormat 未在单元测试中返回预期值

android - 如何在单个选项卡内管理多个 fragment

android - SearchView(不在工具栏中)如何显示全屏下拉列表

java - 更改 AlertDialog 中按钮的文本

android - 设置外键时游标找不到列

android - ViewPager 和 ActionBar 的奇怪错误/行为 (Sherlock)

java - Action 栏 Sherlock 未启动

用于 ListView 的 Android SearchView 过滤器

Android SearchView - 向右移动图标(没有 ActionBar)

Android,是否可以从拨号程序运行该应用程序?