Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 截取硬件搜索按钮以与视图交互_Android_Search_Onkeydown - Fatal编程技术网

Android 截取硬件搜索按钮以与视图交互

Android 截取硬件搜索按钮以与视图交互,android,search,onkeydown,Android,Search,Onkeydown,我想对我提出的一个问题给出一个答案。我想使用手机的搜索按钮与视图交互,该视图在我的res文件夹的布局中定义。基本上是制作一个在线搜索列表。在这里,我将展示一个关于如何使用搜索按钮在布局中按下按钮的示例 public class SearchIntercept extends Activity{ boolean activateSearch; @Override public boolean onKeyDown(int k

我想对我提出的一个问题给出一个答案。我想使用手机的搜索按钮与视图交互,该视图在我的res文件夹的布局中定义。基本上是制作一个在线搜索列表。在这里,我将展示一个关于如何使用搜索按钮在布局中按下按钮的示例

    public class SearchIntercept extends Activity{

            boolean activateSearch;    

        @Override
        public boolean onKeyDown(int keycode, KeyEvent e) {
            switch(keycode) {
                case KeyEvent.KEYCODE_SEARCH:
                    SearchManager mSearch = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
                    onSearchRequested();
                            activateSearch = true;
                    mSearch.stopSearch();
                    return true;
            }

            return super.onKeyDown(keycode, e);
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.search_example);

            SearchManager mSearch = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
            final Button button = (Button) findViewById(R.id.Button_1); 


            // Search Listener
            mSearch.setOnCancelListener(new SearchManager.OnCancelListener() {

                @Override
                public void onCancel() {
                                    if (activateSearch == ture){
                    button.setPressed(true);
                                    activateSearch = false;
                                    }                   
                }
            });
       }
    }

所以我在这里做的就是抓取密钥输入,然后启动一个搜索请求。然后我立即取消该请求,这允许我使用内置于SearchManager中的OnCancelListener。在这一点上,您可以接受请求,并像普通侦听器一样对其执行任何操作。如果您有不同的方法,请在答案中告诉我们。另外,如果我以不同的方式发布,请让我知道,不幸的是,我仍然是一个noob。

我发现这一点是,当你退出活动时,它会回忆起onCancelListener。我会很快更新修复程序。更新并修复。退出时,会有一个生命周期搜索取消内容。你所要做的就是添加一个布尔值,这样它就可以区分你的提议取消和系统取消。