首页 > 解决方案 > 如何在片段的文本视图中显示 firebases 值?

问题描述

我在这里遇到了一些麻烦!* 我无法在片段中显示从 Firebase 检索到的文本视图中的数据/值?*

界面

界面图

从 Firebase 检索的钱应该出现在此处(突出显示的文本视图),但它是空的。因此我也尝试在 Textview 中(在中间),也没有工作......

Firebase 截图

Firebase 表

用户.kt

package com.example.fireauth.ui.Data

import com.google.firebase.database.Exclude
import com.google.firebase.database.IgnoreExtraProperties

@IgnoreExtraProperties

data class user(var id: String? ="",
                var name: String? =" ",
                var email: String? ="",
                var money: Double? = 0.00
) {
    @Exclude
    fun toMap(): Map<String, Any?> {
        return mapOf(
            "uid" to id,
            "name" to name,
            "email" to email,
            "money" to money
        )
    }
}

家庭片段.kt

class HomeFragment : Fragment() {

private val currentUser = FirebaseAuth.getInstance().currentUser

private lateinit var mAuth : FirebaseAuth

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_home, container, false)
    val userId = mAuth!!.currentUser!!.uid
    getMoney() //function call here
}


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    btnTopUp.setOnClickListener{
        val intent = Intent(activity, TopUpActivity::class.java)
        startActivity(intent)
    }

    ScanPayButton.setOnClickListener{
        val action = HomeFragmentDirections.actionScanAndPay()
        Navigation.findNavController(it).navigate(action)
    }

    btn_generate.setOnClickListener {
        val intent = Intent(activity, GenerateActivity::class.java)
        startActivity(intent)
    }

    btn_capture.setOnClickListener {
        val intent = Intent(activity, ScanQRActivity::class.java)
        startActivity(intent)
    }

} //button declaration

fun getMoney(){
    val userId = mAuth!!.currentUser!!.uid
    FirebaseDatabase.getInstance().reference
        .child("Users").child(userId)
        .addValueEventListener(object : ValueEventListener {
            override fun onCancelled(p0: DatabaseError){
            }

            override fun onDataChange(p0: DataSnapshot) {
                val user = p0.getValue(user::class.java)
                //MoneyView.text = user?.money.toString()
                user?.run {(user(id, name, email, money))
                    MoneyView.text = money.toString()
                }
            }

        })
}//FUNCTION TO RETRIEVE DATA FROM FIRBASE AND DISPLAY IN A TEXT VIEW called MoneyView

}

更新

添加Log.e("TAG", p0.getMessage())override fun onCancelled(p0: DatabaseError),这是 logcat 输出。

logcat 图片

添加Log.d("TAG", user?.name)override fun onDataChange(p0: DataSnapshot),这是 logcat 输出。

日志猫图片 2

日志猫图片 3

回答

回答

标签: androidfirebasekotlinfirebase-realtime-database

解决方案


回答

好的...我自己解决了这个问题...只需在有趣的 getMoney()中替换以下代码

只需点击图片即可获得答案......

回答


推荐阅读