Android 使用firebase实时数据库

Android 使用firebase实时数据库,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,我在应用程序中使用数据库值时遇到问题。 我找不到在应用程序中使用它们的方法 auth = FirebaseAuth.getInstance() FirebaseUser = auth.getCurrentUser()!! val uid = auth.getUid()!! val fireBase = FirebaseDatabase.getInstance() userRef = fireBase.getReference("u

我在应用程序中使用数据库值时遇到问题。 我找不到在应用程序中使用它们的方法

auth = FirebaseAuth.getInstance()
        FirebaseUser = auth.getCurrentUser()!!

        val uid = auth.getUid()!!
        val fireBase = FirebaseDatabase.getInstance()
        userRef = fireBase.getReference("users")

        val ordersRef = userRef.child("$uid")
        val valueEventListener = object : ValueEventListener {
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                val username = dataSnapshot.child("names").getValue(String::class.java)
                val lastname = dataSnapshot.child("lastname").getValue(String::class.java)
                Log.d("Data",lastname)
                Log.d("Data",username)
            }

            override fun onCancelled(databaseError: DatabaseError) {
                Log.d("Data", databaseError.getMessage()) //Don't ignore errors!
            }
        }
        ordersRef.addValueEventListener(valueEventListener)
这是从firebase检索数据的方法。 我在logcat中得到:

2020-01-26 15:09:31.480 13943-13943/com.example.odpodstaw D/Data: TestLastname
2020-01-26 15:09:31.480 13943-13943/com.example.odpodstaw D/Data: TestName
我想在应用程序中使用它 如何把它送到varable? 在我的主要活动中

lateinit变量名称:String
lateinit var lastname:String

如何在MainActivity中从数据库获取值到
name
lastname


我只是在学习,我真的不知道如何做到这一点,以及如何在我的应用程序中使用这些数据

假设此提取发生在
main活动中,您可以在接收数据的回调中执行以下操作:

val activity = this@MainActivity
activity.name = name
activity.lastname = lastname

这将设置MainActivity的属性。

假设此提取发生在
MainActivity
中,您可以在接收数据的回调中执行以下操作:

val activity = this@MainActivity
activity.name = name
activity.lastname = lastname

这将设置MainActivity的属性。

我还不明白。我需要在MainActivity中获取“TestLastname”值为
lastname
,在MainActivity中获取“TestName”值为
name
,我还不明白。我需要在MainActivity中将“TestLastname”值设置为
lastname
,在MainActivity中将“TestName”值设置为
name
,这听起来像是在尝试使用
onDataChange
之外的值,这是不可能的。有关原因的更多信息,以及如何在这样的情况下仍然拥有可维护的代码,请参见这里的两个答案,一个是回调,另一个是使用协程。听起来您试图使用
onDataChange
之外的值,这是不可能的。关于为什么会这样,以及如何在这样的情况下仍然拥有可维护代码的更多信息,请参见这里的两个答案,一个是回调,另一个是使用协同路由。