在不启动活动的情况下读取当前片段中的搜索查询

时间:2015-07-08 14:39:39

标签: android searchview

我正在构建一个包含Activity符号的应用,其中包含ActionBar。该活动包含一个带有4个选项卡的选项卡主机,每个选项卡都可以搜索其他内容,具体取决于显示的选项卡和片段。

根据开发者指南(https://developer.android.com/training/search/setup.html#add-sv),在用户输入查询后按下搜索按钮时,将启动一个搜索意图的活动,我可以在其中读取查询:

if (Intent.ACTION_SEARCH.equals(intent.getAction())) 
{
        String query = intent.getStringExtra(SearchManager.QUERY);
        //use the query to search your data somehow
}

但是,我不想重新启动活动,然后决定引发查询的片段,将选项卡设置为正确的,构建新的片段等等......我想要做的只是阅读在用户输入的片段内查询自己(我注意到SearchView类有一个getQuery方法)。

如何在用户完成查询并按下虚拟键盘中的搜索按钮而不重新创建活动后,以某种方式实现读取查询的侦听器?我想获得对搜索框的引用并使用它,就像它是TextView,读取它的文本并使用它。

1 个答案:

答案 0 :(得分:1)

我最终做的是实施OnQueryTextListener。这个监听器有两个方法:onQueryTextChange,在按下文本作为参数的每个键上调用,onQueryTextSubmit在用户按下搜索按钮时调用。如果您在true中返回onQueryTextSubmit,则表示所有内容都已处理,无需启动意图。