java.lang.RuntimeException: 无法启动 activity ComponentInfo{}: kotlin.KotlinNullPointerException
java.lang.RuntimeException: Unable to start activity ComponentInfo{}: kotlin.KotlinNullPointerException
我创建了一个 DialogBox myDialog
并在 Settings.kt
activity 中对其进行了初始化,并且在初始化 themeRadioGroup
时出现了上述错误,尽管我使用了非空断言运算符(!!)
.
我想要做的是使用单选按钮(浅色或深色)更改应用程序的主题。这两个单选按钮在一个对话框中,即 myDialog
和 Settings.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,它旨在避免此类问题。
我创建了一个 DialogBox myDialog
并在 Settings.kt
activity 中对其进行了初始化,并且在初始化 themeRadioGroup
时出现了上述错误,尽管我使用了非空断言运算符(!!)
.
我想要做的是使用单选按钮(浅色或深色)更改应用程序的主题。这两个单选按钮在一个对话框中,即 myDialog
和 Settings.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,它旨在避免此类问题。