首页 > 解决方案 > 与 else 一起使用时,dataSnapshot.value 为 null,否则为

问题描述

当我使用Update_User_Information()afterelse if然后dataSnapshot.value.toString()显示空值并因此Update_User_Information()被执行。

FirebaseDatabase.getInstance().getReference("Users").child(firebaseAuth.uid!!).addListenerForSingleValueEvent(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        if (dataSnapshot.value.toString().contains(signup_username)) {
            progressDialog.dismiss()
            binding.signupUsername.error = "This username is already registered"
            return
        }
        else if (dataSnapshot.value.toString().contains(signup_phone)) {
            progressDialog.dismiss()
            binding.signupUsername.error = "This Phone Number is already registered"
            return
        }
        Toast.makeText(this@Signup, dataSnapshot.value.toString(), Toast.LENGTH_LONG).show() // shows null
        Update_User_Information()
    }
    override fun onCancelled(error: DatabaseError) {
        Toast.makeText(this@Signup, "There is a problem in database. Please report this issue to support.", Toast.LENGTH_LONG).show()
    }
})

但是如果我使用相同的代码进行一点改动,那么它可以工作,但它也会执行

FirebaseDatabase.getInstance().getReference("Users").child(firebaseAuth.uid!!).addListenerForSingleValueEvent(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        if (dataSnapshot.value.toString().contains(signup_username)) {
            progressDialog.dismiss()
            binding.signupUsername.error = "This username is already registered"
        }
        else if (dataSnapshot.value.toString().contains(signup_phone)) {
            progressDialog.dismiss()
            binding.signupUsername.error = "This username is already registered"
        }

    }

    override fun onCancelled(error: DatabaseError) {
        Toast.makeText(this@Signup, "There is a problem in database. Please report this issue to support.", Toast.LENGTH_LONG).show()
    }
})
Update_User_Information()

我想做的是,检查用户名和电话号码是否已在我的数据库中注册,如果在我的数据库中找到,那么我不想执行Update_User_Information(). 有什么解决办法吗?

这是我的数据库的图像

标签: androidkotlinfirebase-realtime-database

解决方案


推荐阅读