В моем приложении первый пользователь создает имя пользователя, которое я сохраняю в Firestore как документ, и задаю его как displayName (username = имя документа = displayName). В приложении пользователь может изменить свое имя пользователя, введя новое имя в EditText
. В результате данные, хранящиеся под его текущим именем пользователя, перемещаются в новый документ с новым именем пользователя. Поэтому сначала я проверяю, используется ли новое имя пользователя кем-то еще, если нет, я создаю новый документ, именем которого является новое имя пользователя. Теперь я получаю текущее displayName (которое является текущим именем пользователя) в виде строки и ввод EditText в виде строки (новое имя пользователя). Я реализовал метод для перемещения документов отсюда: Как переместить документ в Cloud Firestore?
Но когда я вызываю метод, подобный этому moveFirestoreDocument(usernameInput, oldUsername );
, я получаю:
moveFirestoreDocument нельзя применить к (String, String)
Как я могу решить эту проблему? Могу ли я изменить метод moveFirestoreDocument, чтобы он также мог принимать строки?
Вот метод:
public void moveFirestoreDocument(DocumentReference fromPath, final DocumentReference toPath) {
fromPath.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
toPath.set(document.getData())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully written!");
fromPath.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully deleted!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error deleting document", e);
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error writing document", e);
}
});
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
}