状況:私は私のfirebaseリアルタイムデータベースから検索URLと私の関数のパラメータからURLを比較したいです。しかし、検索では、if-elseステートメントの文字列比較からブール値を取得する方法がわかりません。「最終変数 'bool'に値を代入できません」というエラーが表示されます。どのようにしてonDataChangeメソッドからデータを取得できますか?
を比較する()コード:
private boolean compare(String url) {
mDatabaseReference = mFirebaseDatabase.getReference("Executive Branch");
final String newUrl = url;
final boolean bool = false;
mDatabaseReference.limitToFirst(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount() > 0) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
ExecutiveOrder executiveOrder = snapshot.getValue(ExecutiveOrder.class);
if (executiveOrder.getUrl().equals(newUrl)) {
bool = true;
} else {
bool = false;
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("Executive Order", "The read failed: " + databaseError.getDetails());
}
});
return bool;
}
void型のメソッドからtrueまたはfalseを返すことはできませんが、 –
trueまたはfalseを返す他の方法はありますか? –
私は私の答えを変えました、今は大丈夫です。しかし、私は事前にfirebaseの検索を行うことをお勧めしますので、ブロックするか、結果を待つ必要はありません。 –