I receive null snapshot in only this two method
private fun getUserName() {
        databaseReference=FirebaseDatabase.getInstance("https://tailoring-e7e0c-default-rtdb.asia-southeast1.firebasedatabase.app/").getReference("Users")
        databaseReference.child(uAuth.currentUser?.uid.toString()).addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                var userList :User
                userList = snapshot.getValue(User::class.java)!!
                userName=userList?.cid.toString()
                Toast.makeText(this@ProductDetail,"Username detected",Toast.LENGTH_LONG).show()
            }
            override fun onCancelled(error: DatabaseError) {
            }
        })
    }
private fun getProductPic(prodImageURL:String) {
        storageReference= FirebaseStorage.getInstance().reference.child(prodImageURL)
        val localFile = File.createTempFile("tempImage","jpg")
        storageReference.getFile(localFile).addOnSuccessListener {
            val bitMap= BitmapFactory.decodeFile(localFile.absolutePath)
            viewBinding.picViewProd.setImageBitmap(bitMap)
        }
    }
class ProductDetail : AppCompatActivity() {
    private lateinit var databaseReference: DatabaseReference
    private lateinit var uAuth:FirebaseAuth
    private lateinit var storageReference: StorageReference
    private lateinit var viewBinding:ActivityProductDetailBinding
    private lateinit var adapter:commentAdapter
    private lateinit var tc:String
    private lateinit var commentList:ArrayList<commentContain>
    private lateinit var thisProductID:String
    private lateinit var dateTage :String
    private var userName :String=""
    private var tailorUID :String=""
    private var tailorName :String=""
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewBinding = ActivityProductDetailBinding.inflate(layoutInflater)
        val view = viewBinding.root
        setContentView(view)
        tc=getIntent().getStringExtra("tc").toString()
        thisProductID = getIntent().getStringExtra("prodNo").toString()
        uAuth = FirebaseAuth.getInstance()
        //Comment adapter and recycler view code
        commentList= ArrayList()
        getTailorName()
        getComment()
        adapter= commentAdapter(this,commentList)
        viewBinding.commentList.layoutManager=LinearLayoutManager(this)
        viewBinding.commentList.adapter=adapter
        getTimeTag()
        val currentUser = uAuth.currentUser?.uid
        val currentUserURL = "Users/$currentUser.jpg"
        getProductData()
        if(tc=="tailor"){
            viewBinding.btnOrderProduct.isVisible=false
        }
        viewBinding.btnOrderProduct.setOnClickListener {
            addOrder()
        }
        viewBinding.picViewTailor.setOnClickListener {
            val intent = Intent(this, TailorProfile::class.java)
            intent.putExtra("tc",tc)
            intent.putExtra("tuid",tailorUID)
            startActivity(intent)
        }
        viewBinding.sendButton.setOnClickListener{
            getUserName()
            val comment = viewBinding.messageBox.text.toString()
            addComment(thisProductID,userName,comment,dateTage,currentUserURL)
        }
    }
    private fun getUserName() {
        databaseReference=FirebaseDatabase.getInstance("https://tailoring-e7e0c-default-rtdb.asia-southeast1.firebasedatabase.app/").getReference("Users")
        databaseReference.child(uAuth.currentUser?.uid.toString()).addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                var userList :User
                userList = snapshot.getValue(User::class.java)!!
                userName=userList?.cid.toString()
                Toast.makeText(this@ProductDetail,"Username detected",Toast.LENGTH_LONG).show()
            }
            override fun onCancelled(error: DatabaseError) {
            }
        })
    }
    private fun getProductData() {
        databaseReference=FirebaseDatabase.getInstance("https://tailoring-e7e0c-default-rtdb.asia-southeast1.firebasedatabase.app/").reference
        databaseReference.child("Product").child(thisProductID).addValueEventListener(object: ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                val productData = snapshot.getValue<Product>()
                viewBinding.tvViewPrice.setText(productData?.price.toString())
                viewBinding.tvViewClothspants.setText(productData?.clothsPants.toString())
                viewBinding.tvViewFabric.setText(productData?.fabric.toString())
                viewBinding.tvViewHeight.setText(productData?.height.toString())
                viewBinding.tvViewHipBust.setText(productData?.hipBust.toString())
                viewBinding.tvViewSleeve.setText(productData?.sleeve.toString())
                viewBinding.tvViewStyleName.setText(productData?.styleName.toString())
                viewBinding.tvViewWaist.setText(productData?.waist.toString())
                tailorUID = productData?.tailorID.toString()
                getTailorPic(productData?.tailorID.toString())
                getProductPic(productData?.imageURL.toString())
            }
            override fun onCancelled(error: DatabaseError) {
                Toast.makeText(this@ProductDetail,"Some Things wrong in the database", Toast.LENGTH_SHORT).show()
            }
        }
        )
    }
    private fun getProductPic(prodImageURL:String) {
        storageReference= FirebaseStorage.getInstance().reference.child(prodImageURL)
        val localFile = File.createTempFile("tempImage","jpg")
        storageReference.getFile(localFile).addOnSuccessListener {
            val bitMap= BitmapFactory.decodeFile(localFile.absolutePath)
            viewBinding.picViewProd.setImageBitmap(bitMap)
        }
    }
    private fun getTailorName() {
        databaseReference=FirebaseDatabase.getInstance("https://tailoring-e7e0c-default-rtdb.asia-southeast1.firebasedatabase.app/").getReference("Users")
        databaseReference.child(tailorUID).addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                val userList = snapshot.getValue(User::class.java)!!
               tailorName=userList.cid.toString()
                viewBinding.tvPViewTailorName.setText(tailorName)
                Toast.makeText(this@ProductDetail,"Username detected",Toast.LENGTH_LONG).show()
            }
            override fun onCancelled(error: DatabaseError) {
            }
        })
    }
    private fun getTailorPic(tailorUID:String){
        storageReference= FirebaseStorage.getInstance().reference.child("Users/$tailorUID.jpg")
        val localFile = File.createTempFile("tempImage","jpg")
        storageReference.getFile(localFile).addOnSuccessListener {
            val bitMap= BitmapFactory.decodeFile(localFile.absolutePath)
            viewBinding.picViewTailor.setImageBitmap(bitMap)
        }
    }
    private fun getComment() {
        databaseReference=FirebaseDatabase.getInstance().getReference()
        databaseReference.child("Comment").addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                commentList.clear()
                for(postSnapshot in snapshot.children){
                    val currentComment = postSnapshot.getValue(commentContain::class.java)
                    if(currentComment?.productID==thisProductID){
                        commentList.add(currentComment!!)
                    }
                }
                adapter.notifyDataSetChanged()
            }
            override fun onCancelled(error: DatabaseError) {
            }
        })
    }
    private fun addOrder() {
        val intent = Intent(this, NewCustomOrder::class.java)
        intent.putExtra("tc",tc)
        intent.putExtra("prodNo",thisProductID)
        startActivity(intent)
    }
    private fun addComment(productID:String,senderID:String?,comment:String,dateTage:String,currentUserURL:String){
        val newComment = commentContain(uAuth.currentUser?.uid,senderID,comment,dateTage,currentUserURL,productID)
        databaseReference=FirebaseDatabase.getInstance().reference
        databaseReference.child("Comment").child(commentList.size.toString()).setValue(newComment).addOnFailureListener{
            Toast.makeText(this,"Some thing wrong for real time database", Toast.LENGTH_SHORT).show()
        }.addOnSuccessListener {
            Toast.makeText(this,"Comment is added", Toast.LENGTH_SHORT).show()
        }
    }
    private fun getTimeTag() {
        val formatter = SimpleDateFormat("yyyy_MM_dd", Locale.getDefault())
        val now = Date()
        dateTage=formatter.format(now).toString()
    }
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        super.onCreateOptionsMenu(menu)
        getMenuInflater().inflate(R.menu.all_menu,menu)
        return true
    }
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        super.onOptionsItemSelected(item)
        if(item.itemId==R.id.toProfile){
            val intent = Intent(this, TailorProfile::class.java)
            intent.putExtra("tc",tc)
            intent.putExtra("tuid",uAuth.currentUser?.uid)
            finish()
            startActivity(intent)
        }
        else if(item.itemId == R.id.toHome){
            val intent = Intent(this, ProductList::class.java)
            intent.putExtra("tc",tc)
            finish()
            startActivity(intent)
        }else if(item.itemId == R.id.logout){
            val intent = Intent(this, Ground::class.java)
            uAuth.signOut()
            finish()
            startActivity(intent)
        }
        return true
    }
}
The only problem is the getUserName and getTailorName return null at all,which is cause by the snapshot return a null value. I have tried all the method of get data from firebase realtime database, but all of them meets same problem. The weird thing is only the two function meet that problem. Any one can help me please?
below is the picture output enter image description here
