2017-07-31 9 views
0

firebaseでは、onDataChangeがif条件内のコードが実行されるたびに2回呼び出されます。 ここに私のコードです。onListenerForSingleValueEventのonDataChangeが2回発生しました

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

は、データが変更(追加、削除、更新、移動など)されるたびに呼び出され、removeValue()を使用しているため、2回呼び出されたメソッドが呼び出されます。

+0

私はそれを得ることができる方法はありません一度だけ呼ばれる? –

+0

'addListenerForSingleValueEvent'を使用すると' onDataChange'が一度呼び出されます –

+0

addDataChangeは既にaddListenerForSingleValueEventの中にあります –

関連する問題