Android 未解析的引用:搜索\u src\u文本 供参考
这是一个显示问题的分支(注意项目不完整)。运行它,您将看到编译时错误Android 未解析的引用:搜索\u src\u文本 供参考,android,searchview,dynamic-feature-module,Android,Searchview,Dynamic Feature Module,这是一个显示问题的分支(注意项目不完整)。运行它,您将看到编译时错误未解析引用:search\u src\u text 我想做的是: 我想从SearchView向我的ViewModel提交文本。提交文本时,我使用该文本执行查询 你可能在想什么: “只需使用一个OnQueryTextListener” 如果文本为null/空,OnQueryTextListener将不会提交文本。我使用null/empty大小写搜索数据库中的所有内容。所以这不起作用 我尝试过的工作: 过去,我在SearchVie
未解析引用:search\u src\u text
我想做的是:
我想从SearchView向我的ViewModel提交文本。提交文本时,我使用该文本执行查询
你可能在想什么:
“只需使用一个OnQueryTextListener
”
如果文本为null/空,OnQueryTextListener
将不会提交文本。我使用null/empty大小写搜索数据库中的所有内容。所以这不起作用
我尝试过的工作:
过去,我在SearchView中手动搜索了SearchAutoComplete
视图的id。您可以这样找到它:
val searchPlate:SearchView.SearchAutoComplete?=search\u view.findViewById(R.id.search\u src\u text)
然后,您只需附加一个OnEditorActionListener
并监听IME操作,就可以开始了:
searchPlate.setOnEditorActionListener{v,actionId,事件->
如果(actionId==EditorInfo.IME\u ACTION\u未指定
||actionId==EditorInfo.IME\u操作\u搜索){
val searchQuery=v.text.toString()
viewModel.setQuery(searchQuery)
viewmodel.executeSearch()
}
真的
}
通常这很好用。唯一的区别(我可以看到)是这次我使用了一个动态功能模块。当尝试访问R.id.search\u src\u text
时,它抛出以下编译时错误:
Unresolved reference: search_src_text
是的,布局在动态功能模块/res/目录中。
代码
1。布局中的SearchView
2。获取对搜索\u src\u文本的引用
val searchPlate:SearchView.SearchAutoComplete?=search\u view.findViewById(R.id.search\u src\u text)
运行项目将产生错误未解决的引用:search\u src\u text
另一件奇怪的事:
我在视图层次结构中循环,直到找到SearchAutoComplete,然后附加侦听器,它工作得很好
搜索视图.children.withIndex()中((index1,child)的{
printLogD(“ListFragment”,“${index1},${child}”)
对于(子对象作为视图组)中的((index2,child2)。children.withIndex()){
printLogD(“ListFragment”,“T2:${index2},${child2}”)
如果(child2是视图组){
对于(child2作为视图组)中的((index3,child3)。childs.withIndex()){
printLogD(“ListFragment”,“T3:${index3},${child3}”)
如果(child3是视图组){
对于(child3作为视图组)中的((index4,child4)。childs.withIndex()){
printLogD(“ListFragment”,“T4:${index4},${child4}”)
if(child4是SearchView.SearchAutoComplete){
child4.setOnEditorActionListener{v,actionId,事件->
如果(actionId==EditorInfo.IME\u ACTION\u未指定
||actionId==EditorInfo.IME\u操作\u搜索){
val searchQuery=v.text.toString()
printLogD(“NoteList”,“SearchView:(键盘或箭头)正在执行搜索…:${searchQuery}”)
setQuery(searchQuery).let{
viewModel.loadFirstPage()
}
}
真的
}
打破
}
}
}
}
}
}
}
如有任何见解,将不胜感激
val searchPlate: SearchView.SearchAutoComplete? = search_view.findViewById(androidx.appcompat.R.id.search_src_text)