[英]Null cannot be cast to non-null type android.widget.RelativeLayout
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
val item = menu!!.findItem(R.id.menu_wrong_answer)
val layout = item.actionView as RelativeLayout
txt_wrong_answer = layout.findViewById(R.id.txt_wrong_answer) as TextView
txt_wrong_answer.text = 0.toString()
return true
}
錯誤:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.abhishek.quiz, PID: 23203
kotlin.TypeCastException: null cannot be cast to non-null type android.widget.RelativeLayout
at com.abhishek.quiz.QuestionActivity.onPrepareOptionsMenu(QuestionActivity.kt:260)
at android.app.Activity.onPreparePanel(Activity.java:3564)
at androidx.fragment.app.FragmentActivity.onPrepareOptionsPanel(FragmentActivity.java:502)
at androidx.fragment.app.FragmentActivity.onPreparePanel(FragmentActivity.java:488)
at androidx.appcompat.view.WindowCallbackWrapper.onPreparePanel(WindowCallbackWrapper.java:99)
at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.onPreparePanel(AppCompatDelegateImpl.java:2857)
at androidx.appcompat.view.WindowCallbackWrapper.onPreparePanel(WindowCallbackWrapper.java:99)
at androidx.appcompat.app.ToolbarActionBar$ToolbarCallbackWrapper.onPreparePanel(ToolbarActionBar.java:522)
at androidx.appcompat.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:456)
at androidx.appcompat.app.ToolbarActionBar$1.run(ToolbarActionBar.java:56)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
我想問題是你在這里將 null 轉換為 RelativeLayout:
val layout = item.actionView as RelativeLayout
確保 item.actionView 不等於 null。
menu: Menu?
是Nullable
類型並且在線val item = menu...findItem(R.id.menu_wrong_answer)
你告訴編譯器menu
是NonNull
類型的!!
操作員。 所以編譯器編譯。
但是在運行時menu
確實是null
並且這種類型轉換失敗導致崩潰。
請參閱https://kotlinlang.org/docs/reference/null-safety.html#the--operator
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.