新しいアカウントを作成すると、このコードは最初に"signup successful"
と表示され、「ユーザーは既に存在します」と表示されます。他のすべてがうまくいきます。elseおよび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) {
}
});
}
}
});