簡體   English   中英

Null 不能強制轉換為非空類型 android.widget.RelativeLayout

[英]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)你告訴編譯器menuNonNull類型的!! 操作員。 所以編譯器編譯。

但是在運行時menu確實是null並且這種類型轉換失敗導致崩潰。

請參閱https://kotlinlang.org/docs/reference/null-safety.html#the--operator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM