android - 在 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。
谢谢
解决方案
任何尝试这样做的人,您所要做的就是遵循文档
覆盖乐趣 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 的活动的清单。这可以防止新实例。抱歉今天有点慢。
推荐阅读
- javascript - Firebase,避免登录用户访问登录页面
- node.js - AWS Node JS lambda 连接到 AWS RDS
- ios - GCDAsyncSocket 连接到路径
- asp.net-core-2.0 - Asp.net Core 2 [授权]
- unity3d - 如何在虚拟现实中使用 Unity3D 实现 360 视频
- cookies - Lifrey 在 cookie 中存储哪些信息?
- android - 如何从第一个片段单击按钮切换到另一个片段 ViewPager
- javascript - GrapesJs 新闻信构建器将组件与免费标记注释集成在一起
- c++ - 如何在 C++ 多组对中使用查找和擦除
- python-3.x - 无法在 python 3.5 中安装 spacy 英文模型