android - 如何在片段的文本视图中显示 firebases 值?
问题描述
我在这里遇到了一些麻烦!* 我无法在片段中显示从 Firebase 检索到的文本视图中的数据/值?*
界面
从 Firebase 检索的钱应该出现在此处(突出显示的文本视图),但它是空的。因此我也尝试在 Textview 中(在中间),也没有工作......
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 输出。
添加Log.d("TAG", user?.name)
后override fun onDataChange(p0: DataSnapshot)
,这是 logcat 输出。
回答
解决方案
推荐阅读
- javascript - 在 javascript 中使用带有嵌套元素的 map\reduce
- c# - c#可以通过串口发送数据但不能接收
- linux - 如何自动登录 Linux 服务器并在网站上运行 git fetch/pull?
- sql - SQLite 在一行中返回多行
- pdf - 是否有任何 pdf 工具或 git 项目可以将 pdf 免费注释转换为文本注释?
- android - 在 Android 中以编程方式打开“添加 WiFi 网络”屏幕
- python - Pandas Apply/Lambda 返回数据框而不是单行
- flutter - 用颤振在社交媒体上发布链接后如何获得成功?
- javascript - JavaScripts 参数选项
- augmented-reality - ARCore – 来自后置 Android 深度摄像头的原始深度数据