我正在尝试初始化菜单上的自定义搜索工具(3d库),但出现错误。
这是我的代码
space
Logcat消息
qryWordsResult.word
我尝试过
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.base_nav_drawer,menu)
searchItem= menu?.findItem(R.id.srchbar_menu)!!
global_search= searchItem.actionView as MaterialSearchBar
lastsuggestions=ArrayList<String>()
loadSuggest()
global_search.lastSuggestions=lastsuggestions
return true
}
但这没有帮助
第136行对应于kotlin.TypeCastException: null cannot be cast to non-null type com.mancj.materialsearchbar.MaterialSearchBar
at com.example.sg772.foodorder.BaseNavDrawerActivity.onCreateOptionsMenu(BaseNavDrawerActivity.kt:136)
菜单xml
global_search= searchItem.actionView as? MaterialSearchBar
答案 0 :(得分:1)
此行使您的应用崩溃
global_search = searchItem.actionView as MaterialSearchBar
因为searchItem.actionView
总是返回null
,并且global_search
的类型为MaterialSearchBar
(非空类型)。您将null分配给非null类型,这就是您的应用程序崩溃的原因。
您可以将代码更改为
var global_search: MaterialSearchBar? = null
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.base_nav_drawer,menu)
searchItem= menu?.findItem(R.id.srchbar_menu)!!
global_search = searchItem.actionView as MaterialSearchBar?
lastsuggestions=ArrayList<String>()
loadSuggest()
global_search.lastSuggestions=lastsuggestions
return true
}
但是搜索视图未显示在您的应用上,似乎第三方不支持使用app:actionViewClass
集成到菜单项中。
这是您可以尝试的解决方法。
答案 1 :(得分:0)
您的actionView成员很可能为空,您可能想使用:
global_search= searchItem.actionView as MaterialSearchBar?
或定义如下:
var global_search:MaterialSearchBar?= searchItem.actionView
PS。如果您显示global_search是如何定义的
答案 2 :(得分:0)
如果这没有帮助
global_search= searchItem.actionView as? MaterialSearchBar
global_search
可能被声明为不可为空
确保它是
var global_search: MaterialSearchBar? = null