如何通过java检查firebase中是否已经存在用户输入的用户ID?

如何通过java检查firebase中是否已经存在用户输入的用户ID?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我尝试了很多方法来检查用户id是否已经在firebase中,但所有方法都是徒劳的。 下面是我的代码,用于检查用户id是否存在,但我输入的任何数据都不会显示所需的错误 userid = findViewById(R.id.userid); String userVal = userid.getEditText(). getText().toString(); boolean userquery = FirebaseDatabase.getInstance().getReference().chil

我尝试了很多方法来检查用户id是否已经在firebase中,但所有方法都是徒劳的。 下面是我的代码,用于检查用户id是否存在,但我输入的任何数据都不会显示所需的错误

userid = findViewById(R.id.userid);
String userVal = userid.getEditText(). getText().toString();
boolean userquery = FirebaseDatabase.getInstance().getReference().child("user").orderByChild("userid").equals(userVal);


    if(userquery) {
        userid.setError("This user name already exists");
        return;
    }
每当我尝试在输入中添加现有值时,它都会接受该值并在数据库中进行覆盖

这是我的firebase数据库的屏幕截图


到目前为止,您的代码只设置了一个查询。它实际上并不执行查询,因此无法检测数据是否存在。为了,你必须去做

因此,在您的情况下,这可能类似于:

boolean userquery = FirebaseDatabase.getInstance().getReference().child("user").orderByChild("userid").equals(userVal);
userquery.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (!task.isSuccessful()) {
            Log.e("firebase", "Error getting data", task.getException());
        }
        else if (task.getResult().exists()) {
            userid.setError("This user name already exists");
        }
    }
});

“tash.getResult()”中的tash是什么?这是一个打字错误,应该是
任务
。我已经修复了答案中的代码,但我也建议大家阅读一下任务,因为Android有一个非常基本的概念:
userquery.get().addOnCompleteListener(new OnCompleteListener()
,在键入这一行之后,我会遇到无法解决的错误。get()方法您是否碰巧使用了旧SDK。此方法是几个月前引入的。在此之前,您只能使用
addListenerForSingleValueEvent
来完成相同的操作:我对android studio非常陌生。您能告诉我如何检查SDK以及如何更改其版本使用第二种方法解决此问题吗
boolean userquery = FirebaseDatabase.getInstance().getReference().child("user").orderByChild("userid").equals(userVal);
userquery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            userid.setError("This user name already exists");
        }
    }

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