为什么Firebase即使输入为空也返回true

时间:2018-07-04 10:52:03

标签: java android firebase firebase-realtime-database

基本上,该程序应根据输入内容检查Firebase数据库中数据是否存在,并相应地显示弹出窗口,但是如果我将输入内容留空,则仍然可以通过提示输入'请求”弹出窗口。

@Override
public void onClick(View v) {

  final String input = mInput.getText().toString();

  DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
  DatabaseReference idRef = rootRef.child("Patient");
  idRef.addListenerForSingleValueEvent(new ValueEventListener() {

  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {

      if (dataSnapshot.child(input).getValue() != null) {
          startActivity(new Intent(addNew.this, Request.class));
      } else{
          startActivity(new Intent(addNew.this, Fail.class));
      }
  }

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

我想知道如何解决这个问题,以便将空的Input视为不存在的数据,谢谢您的帮助

2 个答案:

答案 0 :(得分:1)

要解决此问题,只需在创建“请求弹出窗口”之前验证input字符串的长度即可。

if(input.length() != 0) {
    //"Request pop-out window"
}

答案 1 :(得分:0)

您正在检查值!= null是否为真,但如果该值为null,firebase不会创建该子节点或将其删除。 您可以改为检查dataSnapshot.hasChild("input")