android - 为什么将数据添加到 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()
}
}
}
}
}