首页 > 解决方案 > 在 Android 上使用 SearchManager 在片段中获取 SearchView 的结果

问题描述

我在片段中有一个有效的搜索视图,并决定为其添加语音。我按照指南创建了一个单独的活动来保存结果。这一切都适用于代码

private fun handleIntent(intent: Intent) {

    if (Intent.ACTION_SEARCH == intent.action) {
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
        // blahh blahh `blahhh`
        }
    }
}

我现在想将结果发送到上面有搜索视图的片段。从意图过滤器开始的动作(android.intent.action.SEARCH)执行此操作的标准方法是什么。

我确实尝试将意图过滤器放在包含片段的活动上,但它似乎启动了一个新实例,所以我不能使用 findfragmentByTag。

谢谢

标签: androidandroid-activitysearchviewsearchmanager

解决方案


任何尝试这样做的人,您所要做的就是遵循文档

覆盖乐趣 onNewIntent(intent: Intent) { super.onNewIntent(intent) handleIntent(intent) }

私人乐趣handleIntent(意图:意图){

if (Intent.ACTION_SEARCH == intent.action) {
    intent.getStringExtra(SearchManager.QUERY)?.also { query ->

        Log.d(TAG, "handleIntent: Query received is $query")
        binding.testSearchView.setQuery(query, false)
        Log.d(TAG, "handleIntent: Complete")
    }
}

}

并确保添加

android:launchMode="singleTop"

到具有 SearchView 的活动的清单。这可以防止新实例。抱歉今天有点慢。


推荐阅读