База данных Firebase, когда пользователь пытается зарегистрироваться с помощью onDataChange, как предотвратить отправку ошибки toast - PullRequest
0 голосов
/ 01 мая 2020

Так что, когда вы пытаетесь зарегистрироваться, все работает отлично, когда пользователь регистрируется, он показывает toast, что пользователь успешно создал, а также показывает, что username уже существует. Как я могу запретить показывать тост, что имя пользователя уже существует, когда пользователь создает свою учетную запись, я думаю, что это проблема на onDataChange, потому что он всегда проверяет это имя пользователя, есть ли способ сделать это лучше, я новичок в android , Вот мой класс регистрации.

btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(Common.isConnectedToInternet(getBaseContext())) {

table_user.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //Check if already exist username
                        if(dataSnapshot.child(edtUsername.getText().toString()).exists()) {
                            Toast.makeText(Register.this, "Username already exists", Toast.LENGTH_SHORT).show();
                        } else {
                            User user =
                              new User(edtUsername.getText().toString(),
                                      edtPassword.getText().toString());

                            table_user.child(edtUsername.getText().toString()).setValue(user);

                            Toast.makeText(Register.this, "Successfully Registration", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                    }

1 Ответ

0 голосов
/ 01 мая 2020

Используйте addListenerForSingleValueEvent

mDb.addListenerForSingleValueEvent(new ValueEventListener() {
     @Override
     public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


         }
     }

     @Override
     public void onCancelled(@NonNull DatabaseError databaseError) {

     }
 });

, поэтому должно быть так

      btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(Common.isConnectedToInternet(getBaseContext())) {

table_user.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        //Check if already exist username
                        if(dataSnapshot.child(edtUsername.getText().toString()).exists()) {
                            Toast.makeText(Register.this, "Username already exists", Toast.LENGTH_SHORT).show();
                        } else {
                            User user =
                              new User(edtUsername.getText().toString(),
                                      edtPassword.getText().toString());

                            table_user.child(edtUsername.getText().toString()).setValue(user);

                            Toast.makeText(Register.this, "Successfully Registration", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...