새 계정을 만들 때이 코드는 먼저 "signup successful"
을 제공하고 "사용자가 이미 있습니다"라고 표시합니다. 다른 모든 것은 잘 작동합니다.if 및 else의 토스트는 else 조건이 true 일 때 실행됩니다. 코드는 먼저 "가입 성공"을 표시 한 다음 "사용자가 이미 있습니다"라고 말합니다.
도와주세요. 이 문제에 시간과 도움을 주셔서 대단히 감사합니다.
도 시도 :
dataSnapshot.child(edtRoll.getText().toString())!=null
를하지만 상황이 더 악화 항상 "user doesn't exist"
을 보여줍니다. 따라서 당신을
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (...) {
...
} else {
table_user.addValueEventListener(new ValueEventListener() {
...
}
}
}
});
: 버튼을 클릭하고 사용자가 가입 "signup successful"
를주는 상태에있는 때마다, 당신은 데이터 변경에 대한 리스너를 다시 등록하고 있기 때문에
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (edtRoll.getText().toString().trim().length()!= 9)
Toast.makeText(SignUp.this, "Roll No. must have 9 characters!", Toast.LENGTH_SHORT).show();
else if (edtName.getText().toString().trim().length() < 3)
Toast.makeText(SignUp.this, "Name is too short!", Toast.LENGTH_SHORT).show();
else if (edtPassword.getText().toString().trim().length() < 8)
Toast.makeText(SignUp.this, "Password must have atleast 8 characters!", Toast.LENGTH_SHORT).show();
else if(!(edtPassword.getText().toString()).equals(edtConfirmPassword.getText().toString()))
Toast.makeText(SignUp.this, "Passwords do not match!", Toast.LENGTH_SHORT).show();
else {
final ProgressDialog mDialog = new ProgressDialog(SignUp.this);
mDialog.setMessage("Please Wait...");
mDialog.show();
table_user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Check if userRoll already exist
if (dataSnapshot.child(edtRoll.getText().toString()).exists()) {
mDialog.dismiss();
Toast.makeText(SignUp.this, "User already registered!", Toast.LENGTH_SHORT).show();
} else {
mDialog.dismiss();
User user = new User(edtName.getText().toString(), edtPassword.getText().toString());
table_user.child(edtRoll.getText().toString()).setValue(user);
Toast.makeText(SignUp.this, "Sign up Successfull!", Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
});