首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Firebase数据库未存储数据,logcat未显示错误

Firebase数据库未存储数据,logcat未显示错误
EN

Stack Overflow用户
提问于 2018-08-13 04:48:06
回答 1查看 2.2K关注 0票数 3

我正在学习Kotlin,并试图在用户登录应用程序时将用户的电子邮件和UID保存在firebase数据库中,但数据没有存储在数据库中,logcat也没有显示错误,所以我找不到问题所在。

附注:我已将firebase数据库规则设置为

代码语言:javascript
复制
{
"rules": {
".read": true,
".write": true
}
}

下面是login.kt文件的代码

代码语言:javascript
复制
package com.revorg.tictactoe

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.activity_login.*

class Login : AppCompatActivity() {

var mFirebaseAuth: FirebaseAuth?=null

var database = FirebaseDatabase.getInstance()
var myRef=database.reference

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

    mFirebaseAuth= FirebaseAuth.getInstance()
}

fun buLoginEvent(view:View){

    LoginToFirebase(etEmail.text.toString(),etPassword.text.toString())
}

fun LoginToFirebase(email:String,password:String){

    mFirebaseAuth!!.createUserWithEmailAndPassword(email,password)
            .addOnCompleteListener(this) {task ->

                if(task.isSuccessful){
                    Toast.makeText(applicationContext,"Login Successful",Toast.LENGTH_SHORT).show()
                    var currentuser = mFirebaseAuth!!.currentUser
                    //save to Database
                    if(currentuser!=null) {
                        myRef.child("Users").child(splitString(currentuser.email.toString())).child(currentuser.uid)
                    }

                    LoadMain()

                } else {
                    Toast.makeText(applicationContext,"Login Failed", Toast.LENGTH_SHORT).show()
                }
            }

}

override fun onStart() {
    super.onStart()

    LoadMain()
}

fun LoadMain(){

    var currentuser = mFirebaseAuth!!.currentUser

    if(currentuser!=null) {


        var intent = Intent(this, MainActivity::class.java)
        intent.putExtra("email", currentuser.email)
        intent.putExtra("uid", currentuser.uid)

        startActivity(intent)
    }
}

fun splitString(str:String):String{

    var split = str.split("@")
    return split[0]
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-13 06:12:14

没有存储任何内容,因为您没有存储任何内容,您需要使用setValue()来存储数据。child()获取对数据库中某个位置的引用。

您应该这样做:

代码语言:javascript
复制
myRef.child("Users").child(currentuser.uid).child("email").setValue(email);

然后,您将拥有这个数据库:

代码语言:javascript
复制
Users
  userUid
     email: email_here
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51812733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档