es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La aplicación se bloquea cuando hago clic en el botón de registro con el identificador “signUpButton”.

private var _binding: FragmentSignUpPageBinding? = null
private val binding get() = _binding!!

private lateinit var firestore: FirebaseFirestore
private lateinit var storage: FirebaseStorage
private lateinit var auth: FirebaseAuth

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
auth = Firebase.auth
firestore = Firebase.firestore
storage = Firebase.storage
}

Hay elementos inicializados desde Firebase.

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentSignUpPageBinding.inflate(inflater,container,false)
val name = binding.nameText.text.toString()
val surname = binding.surnameText.text.toString()
val email = binding.emailText.text.toString()
val password = binding.passwordText.text.toString()
val button = radioButton.isChecked
val button2 = radioButton2.isChecked

if (name.equals("")|| surname.equals("")){
    Toast.makeText(requireActivity(),"Error",Toast.LENGTH_LONG).show()
}
return binding.root

}

Hay un viewBinding en el Fragmento, valores que usaré y verificaciones que se deben realizar antes de pasar a la siguiente página.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

signUpButton.setOnClickListener {
    val action = SignUpPageFragmentDirections.actionSignUpPageFragmentToSignCalculatorFragment()
    Navigation.findNavController(it).navigate(action)
}

}

Y finalmente el código del fragmento que me permitirá cambiar a la siguiente página.

El problema ocurre cuando hago clic en el botón signUpButton, el programa se bloquea.

Se produjo un intento de invocación de un método virtual ‘boolean android.widget.RadioButton.isChecked ()’ en una referencia de objeto nulo.

Y hay un error relacionado con los botones de radio. Cuando elimino los valores de estos botones, la aplicación se ejecuta. Sin embargo, el mensaje Toast se muestra tan pronto como se abre la página. No verifica si se ha ingresado algún dato.

Entonces, ¿cómo puedo solucionar el error de los botones y el problema del mensaje Toast?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el error del radiobutton, asegúrese de que el ID del radiobutton en el diseño XML coincida con el ID en el código del fragmento. Además, asegúrese de que el radiobutton esté presente en el archivo de diseño.

    Para solucionar el problema del mensaje Toast, mueva el código que verifica los campos vacíos dentro del bloque signUpButton.setOnClickListener. Esto asegurará que la verificación se realice solo cuando se hace clic en el botón. Además, puede verificar los campos vacíos individualmente y mostrar el mensaje de error correspondiente para cada campo.

    Ejemplo:

    signUpButton.setOnClickListener {
        val name = binding.nameText.text.toString()
        val surname = binding.surnameText.text.toString()
        val email = binding.emailText.text.toString()
        val password = binding.passwordText.text.toString()
        val button = binding.radioButton.isChecked
        val button2 = binding.radioButton2.isChecked
    
        if (name.isEmpty()) {
            binding.nameText.error = "Se requiere el nombre"
            return@setOnClickListener
        }
    
        if (surname.isEmpty()) {
            binding.surnameText.error = "Se requiere el apellido"
            return@setOnClickListener
        }
    
        if (!button && !button2) {
            Toast.makeText(requireActivity(),"Por favor seleccione el género",Toast.LENGTH_LONG).show()
            return@setOnClickListener
        }
    
        // Continuar a la siguiente página
        val action = SignUpPageFragmentDirections.actionSignUpPageFragmentToSignCalculatorFragment()
        Navigation.findNavController(it).navigate(action)
    }
    

Comments are closed.