首页 > 解决方案 > setValue 里面的 onDataChange

问题描述

我尝试从onDataChangefirebase内部设置一个新值,但是当我尝试在实时数据库内的变量上设置一个新值时,android studiosetValue()用红色标记该方法并说Cannot resolve method 'setValue' in 'DataSnapshot'

这是我的代码的一部分:

like_btn.setImageResource(R.drawable.like_emoji);
                    postRef.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            // get post id \\
                            PostModel postModel = new PostModel();
                            String post_id = postModel.getId();

                            // get current likes from db \\
                            String currentLikes = snapshot.child(post_id).child("likes").getValue().toString();
                            int currentLikesToInt = Integer.parseInt(currentLikes);

                            // set new current likes on db \\
                            int newCurrentLikes = currentLikesToInt + 1;
                            snapshot.child(post_id).child("likes").setValue(newCurrentLikes);
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {
                            Toast.makeText(itemView.getContext(), "Error: " + error, Toast.LENGTH_LONG).show();
                        }
                    });

标签: javaandroidfirebase

解决方案


您不能使用setValue()on DataSnapshot,这是 firebase 刚刚为您检索到的值。您需要做的是使用您的database reference. 在这种情况下,它会是这样的:

postRef.child(post_id).child("likes").setValue(yourValue);

希望这postRef是对可以找到的数据库post_id的引用。likes有关此内容的更多信息,请阅读Firebase 文档


推荐阅读