Я хочу дать пользователю в моем приложении возможность удалить свою учетную запись, поэтому, когда он нажимает кнопку удаления, удаляется документ, содержащий всю его информацию. Имя документа - его displayName, поэтому я получаю его в виде строки, но когда я запускаю код, который вы видите ниже, я получаю исключение NullpointerException в этой строке: String currentUsername = user.getDisplayName();
, хотя displayName не равно нулю.
Редактировать:
Я нашел решение самостоятельно, см. Ответ ниже.
Вот мой метод:
btn_delete_account.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.delete()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
deleteDocument();
}
}
});
}
});
...
public void deleteDocument (){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUsername = user.getDisplayName();
db.collection("User").document(currentUsername)
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully deleted!");
Toast.makeText(PersonalSettings.this, "Your account was successfully deleted.", Toast.LENGTH_SHORT).show();
Intent i = new Intent(PersonalSettings.this, SignInActivity.class);
startActivity(i);
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error deleting document", e);
}
});
}