Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当按钮单击一次时,代码在firebase onDatachange中执行两次_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 当按钮单击一次时,代码在firebase onDatachange中执行两次

Java 当按钮单击一次时,代码在firebase onDatachange中执行两次,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,当用户单击按钮时,我正在使用firebase onDataChange更新firebase实时数据库中的数据,代码如下。当点击按钮时,onDataChange方法中的所有代码执行一次,但编号为#1的代码“意图活动”执行两次,即使我点击按钮一次。有什么问题吗 if (dataSnapshot.child(uid2).hasChild(postID2)) { //Create mat

当用户单击按钮时,我正在使用firebase onDataChange更新firebase实时数据库中的数据,代码如下。当点击按钮时,onDataChange方法中的所有代码执行一次,但编号为#1的代码“意图活动”执行两次,即使我点击按钮一次。有什么问题吗

     if (dataSnapshot.child(uid2).hasChild(postID2)) 
{

                                                    //Create matches node
       databaseReference1.addValueEventListener(new ValueEventListener() {
         @Override
         public void onDataChange(DataSnapshot dataSnapshot) {

    if (dataSnapshot.child("Male").hasChild(postUser_id)) {
                                                              //  view.setEnabled(false);
              databaseReference2.child(user_id).child(postUser_id).setValue(username2);

              databaseReference3.child(user_id).child(postUser_id).setValue(username2);

            databaseReference5.child(uid1).child(user_id).setValue(new Match1(username1,currentUser_username2,postpicf,user_id));
      databaseReference5.child(user_id).child(uid1).setValue(new Match1(username2,currentUser_username1,postpicm,uid1));

    //#6 databaseReference6.child(uid1).push().setValue("New Friendc");



        Intent profileIntent = new Intent(getActivity(), MatchView.class);
        profileIntent.putExtra("postID", postUser_id);
        startActivity(profileIntent);

根据您对处理过程的描述,您希望并且应该使用
addListenerForSingleValueEvent()
,而不是
addValueEventListener()
,这会使侦听器保持连接。多次执行您发布的代码会导致多个活动侦听器,当数据更改时,
onDataChange()
会多次触发

databaseReference1.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        ...
    }
});