首页 > 解决方案 > 为什么将数据添加到 Firebase 的部分代码不起作用

问题描述

当您单击按钮时,应切换活动。

当我添加代码以将数据添加到实时数据库时,它停止切换到另一个活动,并且部分代码停止工作。

如果您查看日志,然后从REF_DATABASE_ROOT. child(NODE_USERS).child(uid)和之前开始else,代码不起作用。

这是我的代码:

class LoginActivity : AppCompatActivity() {
    private lateinit var login_email: EditText
    private lateinit var login_pass: EditText
    private lateinit var btn_login: Button
    private lateinit var register_text: TextView
    private val TAG = "abc"

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

        login_email=findViewById(R.id.login_email)
        login_pass=findViewById(R.id.login_pass)
        btn_login=findViewById(R.id.btn_login)
        register_text=findViewById(R.id.register_text)

        register_text.setOnClickListener{
            val intent = Intent(this, RegisterActivity::class.java)
            startActivity(intent)
        }

        btn_login.setOnClickListener{Log.d(TAG, "Нажатие на кнопку")
            if(login_email.text.toString().isEmpty() || login_pass.text.toString().isEmpty()){
                Toast.makeText(this, "Поле пустое", Toast.LENGTH_SHORT).show()
            }else{
                AUTH.signInWithEmailAndPassword(login_email.text.toString(), login_pass.text.toString())
                    .addOnCompleteListener { task->
                        if(task.isSuccessful){
                            val uid = AUTH.currentUser?.uid.toString()
                            val dateMap = mutableMapOf<String, Any>()
                            dateMap[CHILD_ID] = uid
                            REF_DATABASE_ROOT.child(NODE_USERS).child(uid)
                                .addListenerForSingleValueEvent(AppValueEventListener {
                                  if (!it.hasChild(CHILD_USERNAME)) {
                                    dateMap[CHILD_USERNAME] = uid
                                  }

                                  REF_DATABASE_ROOT.child(NODE_USERS).child(uid).updateChildren(dateMap)
                                    .addOnSuccessListener {
                                        val intent = Intent(this, MainActivity::class.java)
                                        startActivity(intent)
                                    }.addOnFailureListener { Toast.makeText(this, it.message.toString(), Toast.LENGTH_SHORT).show() }
                                })
                        }else{
                            Toast.makeText(this, task.exception?.message.toString(), Toast.LENGTH_SHORT).show()
                        }
                }
            }
        }
    }

标签: androidfirebasekotlinfirebase-realtime-database

解决方案


推荐阅读