首页 > 解决方案 > Firebase onDataChange() 未执行

问题描述

所以我正在重写我的应用程序。想要从 Firebase 实时数据库获取数据,但 onDataChange() 方法看起来好像没有执行。我输入了几个日志语句来查看执行了什么,我在 Logcat 中得到的只是这些:

D/MainActivity: onStart()

D/MainActivity:用户已登录!

D/MainActivity:达到用户参考

这是我的用户对象模型:

data class User (
var client: String = "",
var email: String = "",
var isAdmin: Boolean = false,
var createJob: Boolean = false,
var viewJobs: Boolean = false
)

这是数据库数据:

Firebase 实时数据库

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mAuth = FirebaseAuth.getInstance()
        database = FirebaseDatabase.getInstance()
        userReference = database.getReference("users")
    }

override fun onStart() {
    bottom_navigation.selectedItemId = R.id.nav_home

    Log.d("MainActivity", "onStart()")
    if (!(mAuth.currentUser != null)) {
        val intent = Intent(this, LoginActivity::class.java)
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        startActivity(intent)
    } else {
        Log.d("MainActivity", "User is logged in!")

        val userListener = object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                //user = snapshot.value as User
                Log.d("MainActivity", "Client logged in!")
            }

            override fun onCancelled(error: DatabaseError) {
                Log.d("MainActivity", error.message)
            }
        }
        Log.d("MainActivity", "userReference reached")

        userReference.child(mAuth.uid.toString()).addValueEventListener(userListener)
        this.userListener = userListener
    }

    super.onStart()
}

此处提供完整的 MainActivity.kt 代码!

标签: androidfirebase-realtime-database

解决方案


打字错误或您的想法。

userReference.child(mAuth.currentUser!!.uid).addValueEventListener(userListener)

推荐阅读