应用程序结构:我的主要活动也充当SearchBar中带有SearchView的搜索活动。当我在ActionBar中搜索时,我在主活动中使用onNewIntent处理它。当意图是ACTION_SEARCH时,我将MainActivity中的当前片段(可能没有或先前的搜索片段)替换为新的搜索片段,然后创建ASyncTask以从API获取一些数据,然后创建另一个ASyncTask以获取有关数据的更多详细信息然后填充片段中的列表视图。
问题:执行搜索后,SearchView字段为空并再次聚焦。
目标:我希望SearchView不会被关注,而SearchText会留在用户想要更改的位置。
我成功的是使用MenuItemCompat.collapseActionView()
关闭动作视图(并移除焦点)我尝试过clearFocus()和setQuery()以及谷歌通过谷歌搜索找到的其他几种方法,但似乎没有任何效果。我也试过在onQueryTextSumbit函数onQueryTextListener上使用它们都没有成功。我已经看过其他应用程序如F-Droid和Simpletask Cloudless如何实现它,并且大多数应用程序在现有数据上使用过滤器,而我使用的是ASyncTasks,我认为这可能是问题的根源。
答案 0 :(得分:0)
所以我找到了评论中提出的替代解决方案(谢谢你,无论pskink)。当我的MainActivity收到SearchIntent时,它创建了一个新的搜索列表片段(这是我的错误)。我在MainActivity中将搜索片段创建更改为OnCreate,并使用单独的函数填充已创建的片段,现在clearFocus()在我的SearchView侦听器的onQueryTextSubmit函数中正常工作。