android - onCreateInputConnection 为 SearchView 返回 null
问题描述
我试图获取 SearchView 的输入连接。我想做这个 b/ci 有一个应用内键盘,每当用户想要搜索时,我都会显示我的应用内键盘。为此,我应该使用方法 onCreateInputConnection 获取 SearchView 的输入连接,但是该方法为 SearchView 返回 null,但它对 EditText 工作正常。另外,我使用导航栏上的 SearchView 作为菜单项。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu_advanced_search, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
CustomAmharicKeyboard customAmharicKeyboard = findViewById(R.id.keyboard);
customAmharicKeyboard.setVisibility(View.VISIBLE);
InputConnection inputConnection = searchView.onCreateInputConnection(new EditorInfo());
customAmharicKeyboard.setInputConnection(inputConnection);
}
解决方案
SearchView
不扩展EditText
实际上它是一个包含多个视图的布局。如果你想从中得到InputConnection
你SearchView
可以试试这个
InputConnection inputConnection = searchView.findViewById(R.id.search_src_text).onCreateInputConnection(new EditorInfo());
推荐阅读
- python - 如何使用 rmtree() 删除文件夹和文件
- debugging - 调试模式:MACDOC;TRDEBG USAGE
- html - flex: 1 不在 safari 上滚动?
- php - DB::select 过程从输入请求返回空数组
- javascript - 用于将一种 JSON 格式转换为另一种 JSON 格式的 Java 脚本
- vue.js - Vue:找不到模块'@/views/layout'
- devops - 如何从 api 在 cisco ucs manager 中创建用户?
- javascript - jquery popup中的事件被多次触发
- python - 如何使用 QStyledItemDelegate 绘制()
- php - 如何在侧边栏小部件中修改和设置 WooCommerce 产品类别计数 NUMBER