gpt4 book ai didi

android - Kotlin .TypeCastException : null cannot be cast to non-null type

转载 作者:行者123 更新时间:2023-11-29 23:17:39 24 4
gpt4 key购买 nike

我正在尝试在菜单上初始化自定义搜索工具(3d 库),但出现错误。

这是我的代码

 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
}

Logcat 消息

kotlin.TypeCastException: null cannot be cast to non-null type com.mancj.materialsearchbar.MaterialSearchBar
at com.example.sg772.foodorder.BaseNavDrawerActivity.onCreateOptionsMenu(BaseNavDrawerActivity.kt:136)

我试过了

 global_search= searchItem.actionView as? MaterialSearchBar

但是没用第 136 行对应于 global_search= searchItem.actionView as MaterialSearchBar

菜单的xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/srchbar_menu"
android:title="search"
android:icon="@drawable/ic_search_black_24dp"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="com.mancj.materialsearchbar.MaterialSearchBar"/>
</menu>

最佳答案

这一行会让你的应用崩溃

global_search = searchItem.actionView as MaterialSearchBar

因为searchItem.actionView总是返回null并且global_search类型是MaterialSearchBar(非null类型)。您将 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
}

但搜索 View 没有显示在您的应用程序上,似乎第 3 方不支持使用 app:actionViewClass 集成到菜单项中。

这是您可以尝试的变通解决方案。

https://github.com/mancj/MaterialSearchBar/issues/107

关于android - Kotlin .TypeCastException : null cannot be cast to non-null type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com