java.lang.RuntimeException: 无法启动 activity ComponentInfo{}: kotlin.KotlinNullPointerException

java.lang.RuntimeException: Unable to start activity ComponentInfo{}: kotlin.KotlinNullPointerException

我创建了一个 DialogBox myDialog 并在 Settings.kt activity 中对其进行了初始化,并且在初始化 themeRadioGroup 时出现了上述错误,尽管我使用了非空断言运算符(!!).
我想要做的是使用单选按钮(浅色或深色)更改应用程序的主题。这两个单选按钮在一个对话框中,即 myDialogSettings.kt 是我想更改主题的 activity,所以这就是为什么我想从 myDialog.

Settings.kt Activity

class Settings : AppCompatActivity() {
 private lateinit var themeRadioGroup : RadioGroup

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_settings)

        val myDialog = Dialog(this)
        myDialog.setContentView(R.layout.app_info_popup)
        themeRadioGroup = myDialog.findViewById(R.id.theme_radio_group)!!
           
        //...
}

!! 是您可以 获得 KotlinNullPointerException 的唯一方法。异常意味着您断言该项目是 non-null 是错误的。在这种情况下,这意味着您设置的对话框布局中不存在具有该 ID 的视图。

也许您要查找的视图位于 activity 布局中,在这种情况下,您应该调用 this.findViewById 而不是 myDialog.findViewById

否则,请仔细检查您的对话框布局以确保它存在。如果您有针对不同配置的多个版本的布局,请确保它们都有一个具有该 ID 的视图。

您可能需要查看 view binding,它旨在避免此类问题。