我无法相信我没有看到有关此问题的更多讨论。我错过了一些明显的东西吗?
我在启用语音的情况下使用SearchView小部件进行活动。这是一个singleTop实例,因此相同的活动将能够捕获搜索意图。
当用户使用语音输入时,我想在实际搜索发生之前向用户显示查询文本以进行任何更正(如果需要)。
在我的onNewIntent()方法中,我处理搜索意图以从语音中检索查询文本并更新搜索文本框。
但是,只要我使用查询文本设置文本框,就会使用SearchViews文本触发新的搜索意图。我的onNewIntent()收到了同样的信息。
这是一个无限循环。
我尝试设置SearchView的OnQueryTextListener,希望侦听器直接从文本框中捕获搜索文本。但是,它确实没有阻止触发新的搜索意图。
我即将放弃SearchView。考虑到我想拥有语音和建议功能,我希望有人可以建议我解决这个问题。
答案 0 :(得分:1)
固定。 问题是调用将查询文本显示到文本框,searchView.setQuery(query,false)接受两个参数,第二个参数指示文本是否需要在放入框中后提交。我必须从示例中复制代码,并没有注意第二个参数。这是“真的”,但在这种情况下应该是“假的”。