Удаление учетной записи с Firebase Realtime - PullRequest
1 голос
/ 20 января 2020

У меня проблема с удалением аккаунта для пользователя. Удаление кода успешно, и это работает. Единственное, что не работает, это то, что после удаления учетной записи приложение должно привести пользователя на страницу входа, но вместо этого оно приведет пользователя на страницу mainActivity, что странно, почему оно так себя ведет? Понятия не имею, что пошло не так.

//update account

 if (currentUser != null) {
            userId = currentUser.getUid();
            databaseReference = FirebaseDatabase.getInstance().getReference("Customer").child(firebaseAuth.getUid());


            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    Customer cust = dataSnapshot.getValue(Customer.class);
                    name.setText(cust.name);
                    address.setText(cust.home_address);
                    phone.setText(cust.telephone_number);
                    email.setText(cust.email);

                }

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

                }
            });

            update.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            Log.i("Test", name.getText().toString());
                            dataSnapshot.getRef().child("name").setValue(name.getText().toString());
                            dataSnapshot.getRef().child("home_address").setValue(address.getText().toString());
                            dataSnapshot.getRef().child("telephone_number").setValue(phone.getText().toString());

                            Toast.makeText(getApplicationContext(), "Successfully updated!", Toast.LENGTH_LONG).show();
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {
                            Log.d("User", databaseError.getMessage());
                        }
                    });
                }
            });

        }



public void deleteAccount(View view) {
        progBar = findViewById(R.id.progBar);
        firebaseAuth = FirebaseAuth.getInstance();
        AlertDialog.Builder dialog = new AlertDialog.Builder(CustProfileActivity.this);
        dialog.setTitle("Are you sure ? ");
        dialog.setMessage("Deleting this account will result in completely removing your " +
                " account from the system and you won't be able to access the app.");
        dialog.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                progBar.setVisibility(View.VISIBLE);
                FirebaseDatabase.getInstance().getReference().child("Customer").child(firebaseAuth.getCurrentUser().getUid()).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            progBar.setVisibility(View.GONE);
                            Toast.makeText(getApplicationContext(), "Account Deleted", Toast.LENGTH_SHORT).show();
                            FirebaseAuth.getInstance().signOut();
                            Intent intent = new Intent(CustProfileActivity.this, LoginActivity.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);
                            finish();
                        } else {
                            Toast.makeText(CustProfileActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
                        }

                    }

                });
            }
        });

        dialog.setNegativeButton("Dismiss", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        AlertDialog alertDialog = dialog.create();
        alertDialog.show();

    }


enter image description here

1 Ответ

0 голосов
/ 20 января 2020

Можете ли вы заменить эту строку следующим кодом:

 if (task.isSuccessful()) {
                        progBar.setVisibility(View.GONE);
                        Toast.makeText(getApplicationContext(), "Account Deleted", Toast.LENGTH_SHORT).show();
                        FirebaseAuth.getInstance().signOut();
                        Intent intent = new Intent(CustProfileActivity.this, LoginActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(intent);
                        finish();
                    }

На это:

  if (task.isSuccessful()) {

                    progBar.setVisibility(View.GONE);
                    Toast.makeText(getApplicationContext(), "Account Deleted", Toast.LENGTH_SHORT).show();
                    FirebaseAuth.getInstance().signOut();
                    Intent intent = new Intent(CustProfileActivity.this, LoginActivity.class)
                    startActivity(intent)
                         finishAffinity()

                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...