Android初学者在这里。这可能听起来很愚蠢,但是我遇到了一个if-else块的问题,我在onDataChange()方法中为firebase数据库引用的事件监听器创建了这个块。
以下是监听器的代码:
requestRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for(DataSnapshot request : dataSnapshot.getChildren()){
RequestDetails retrievedDetails = request.getValue(RequestDetails.class);
if(retrievedDetails.equals(requestDetails)){
alreadyRequested = true;
// finish();
// startActivity(getIntent());
break;
}
}
}
if(!alreadyRequested){
//alreadyDisplayed = true;
mDatabase.child("Requests").push().setValue(requestDetailsHashMap);
Toast.makeText(ParticipantSportOptions.this, "Request Successfully Sent!", Toast.LENGTH_SHORT).show();
// finish();
// startActivity(getIntent());
}
else if(alreadyRequested){
Toast.makeText(ParticipantSportOptions.this, "Request has already been received!\nPlease wait for approval!",
Toast.LENGTH_SHORT).show();
return;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
此侦听器位于onClick方法onClick()内部,用于按钮。 需要做的是 - 第一次单击此按钮时,数据(请求)将写入数据库。对于每次后续点击按钮,我会检查用户是否正在尝试发送多个请求,如果是,我会显示吐司并返回。
我在运行期间观察到的是,在第一次点击按钮时,会显示两个Toast消息。
为什么会这样?