首页 > 解决方案 > 如何更改firebase数据的值,它databaseRef与不同类中的valueEventListener存在

问题描述

我有带有 ratingBar 的片段。如果在这里使用数据库引用,数据会改变,但是当我返回并尝试再次输入时应用程序崩溃,因为此时仅添加了有关评分栏的数据

我尝试了界面,但是当我这样做时,片段有:

二进制 XML 文件第 7 行:膨胀类片段时出错

//Fragment
override fun onRatingChanged(ratingBar: RatingBar?, rating: Float, fromUser: Boolean) {

        // val mDatabase: DatabaseReference = FirebaseDatabase.getInstance().getReference("uploads")
        //val itemReference = mDatabase.child(objectId)
        //itemReference.child("stars").setValue(rating.toDouble())
        setStars(rating.toDouble())
    }
//Activity
        mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads")

        mDatabaseRef.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                mUploads.clear()
                for (postSnapshot in dataSnapshot.children) {
                    val upload: Upload = postSnapshot.getValue(Upload::class.java)!!
                    (mUploads).add(upload)
                }

                mAdapter.notifyDataSetChanged()

                mProgressCircle.visibility = View.INVISIBLE
            }

            override fun onCancelled(databaseError: DatabaseError) {
                Toast.makeText(this@ImagesActivity, databaseError.message, Toast.LENGTH_SHORT).show()
                mProgressCircle.visibility = View.INVISIBLE
            }
        })

    }
//My interface try
    override fun modifyItemState(itemObjectId: String, stars: Double) {
        // val mDatabase: DatabaseReference = FirebaseDatabase.getInstance().getReference("uploads")
        val itemReference = mDatabaseRef.child(itemObjectId)
        itemReference.child("stars").setValue(stars)
    }

当我想回到这个片段活动时,它从 0 更改,创建了星星

标签: androidfirebasekotlin

解决方案


推荐阅读