addListenerForSingleValueEvent中的onDataChange被触发两次

时间:2017-07-31 09:06:56

标签: android firebase firebase-realtime-database

在firebase中,每次执行if条件内的代码时,都会调用onDataChange两次。  这是我的代码。

 public void onDataChange(DataSnapshot dataSnapshot) {
     for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
         if(snapshot.child("visité").getValue().toString().equals(visité.getText().toString())
             && snapshot.child("date").getValue().toString().equals(date.getText().toString())
             && snapshot.child("zone").getValue().toString().equals(zone.getText().toString())
             && snapshot.child("etat").getValue().toString().equals("Créé")){
                 mDB.child(visiteur).child(snapshot.getKey()).removeValue();
                 loadData();
         } else {
             Toast.makeText(context,getString(R.string.suppr_error), Toast.LENGTH_SHORT).show();
         }
     }
}

在阅读类似问题之后,我认为它是由onDataChange内部的循环引起的。如何从onDataChange中获取循环?

1 个答案:

答案 0 :(得分:1)

每次更改(添加,删除,更新,移动......)时都会调用'NoneType' object is not iterable,您正在使用onDataChange,因此它将调用该方法,这就是为什么它被调用两次。