Я столкнулся с некоторыми проблемами здесь! * Я не могу отобразить данные / значения, которые извлекаются из Firebase в текстовое представление во фрагменте? *
Интерфейс
Изображение интерфейса
деньги, которые извлекаются из Firebase, должны появиться здесь (выделенный текст), НО они пусты. Таким образом я также попытался в Textview (в середине), также не работает ...
Скриншот Firebase
User.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
)
}
}
Home Fragment.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.
logcat picture 3
ОТВЕТ
Ответ