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

发布于 2024-12-23 13:32:46 字数 1719 浏览 3 评论 0原文

我想发送我的一个问题的答案。我想使用手机的搜索按钮与视图进行交互,该视图是在我的 res 文件夹的布局中定义的。基本上是制作一个 onSearchListener。在这里,我将展示如何使用搜索按钮按下布局中的按钮的示例。

    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。此时,您可以像普通侦听器一样接收请求并对其执行任何您想要的操作。如果您有其他方法来执行此操作,请在答案中告诉我们。另外,如果我应该以不同的方式发布此内容,请告诉我,不幸的是我仍然是一个菜鸟。

I wanted to send along an answer to a question that I had. I wanted to interact with a view, which is defined in a layout in my res folder, using my phone's search button. Basically making an onSearchListener. Here I will show an example on how to press a button in your layout with the search button.

    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;
                                    }                   
                }
            });
       }
    }

So what I do here is grab the key input and then start a search request. I then cancel that request immediately which allows me to use the OnCancelListener that is built into the SearchManager. At this point you can take the request and do anything you want with it just like a normal listener. If you have a different way to do this please let us know in the answers. Also if I should post this in a different way please let me know, unfortunately I'm still a noob.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文