Creé un DialogBox myDialog y lo inicialicé en la actividad Settings.kt y recibo el error anterior cuando inicializo el themeRadioGroup, aunque he usado un operador de aserción no nulo (!!).
Lo que quiero hacer es cambiar el tema de la aplicación usando botones de radio (claro u oscuro). Y esos dos botones de radio están en un cuadro de diálogo, es decir, myDialog y Settings.kt es la actividad de la que quiero cambiar de tema, por eso quiero acceder al grupo de radio desde myDialog.

Actividad de Settings.kt

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)!!
           
        //...
}
0
Aditya Gupta 28 oct. 2020 a las 18:24

1 respuesta

La mejor respuesta

!! es la única forma en que puede obtener una KotlinNullPointerException. La excepción significa que su afirmación de que el elemento no es nulo es incorrecta. En este caso, significa que una vista con ese ID no existe en el diseño de diálogo que ha establecido.

Quizás la vista que busca está en el diseño de la actividad, en cuyo caso debería llamar a this.findViewById en lugar de myDialog.findViewById.

De lo contrario, verifique de cerca el diseño de su cuadro de diálogo para asegurarse de que esté allí. Si tiene varias versiones del diseño para diferentes configuraciones, asegúrese de que todas tengan una vista con ese ID.

Le recomendamos que consulte enlace de vista, que está diseñado para evitar este tipo de problema.

0
Tenfour04 28 oct. 2020 a las 16:01