записывает переменную не правильно
У меня есть код который отправляет в firebase firestore имя пользователя (то которое он ввел в поле), но почему-то записывается не просто текст а вот это:
androidx.appcompat.widget.AppCompatEditText{98e123e VFED..CL. ........ 0,747-1222,952
#7f0800f8 app:id/inputName}`
Понятия не имею почему, вот код который отправлеяет это в firebase:
private void signUp() {
// loading(true);
FirebaseFirestore database = FirebaseFirestore.getInstance();
HashMap<String, Object> user = new HashMap<>();
user.put(Constants.KEY_NAME, binding.inputName.toString());
database.collection(Constants.KEY_COLLECTION_USERS)
.add(user)
.addOnSuccessListener(documentReference -> {
// loading(false);
String userName = binding.inputName.getText().toString();
preferenceManager.putBoolean(Constants.KEY_IS_SIGNED_IN, true);
preferenceManager.putString(Constants.KEY_USER_ID, documentReference.getId());
preferenceManager.putString(Constants.KEY_NAME, userName);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
})
.addOnFailureListener(exception -> {
showToast(exception.getMessage());
});
}
В файле costants лежит вот это:
public static final String KEY_COLLECTION_USERS = "users";
public static final String KEY_NAME = "name";
public static final String KEY_PREFERENCE_NAME = "fllafPreference";
public static final String KEY_IS_SIGNED_IN = "isSignedIn";
public static final String KEY_USER_ID = "userId";
public static final String KEY_USER = "user";
Я новичок в андроид студио поэтому много-чего не знаю.
Ответы (1 шт):
Автор решения: Danila Kartovitskii
→ Ссылка
В функции signUp() вы пропустили getText(). Т.е вызывали toString(), на AppCompatEditText. Оттуда вы и получали такое имя юзера
androidx.appcompat.widget.AppCompatEditText{98e123e VFED..CL. ........ 0,747-1222,952 #7f0800f8 app:id/inputName}`
Вот исправленная функция:
private void signUp() {
// loading(true);
FirebaseFirestore database = FirebaseFirestore.getInstance();
HashMap<String, Object> user = new HashMap<>();
user.put(Constants.KEY_NAME, binding.inputName.getText()toString());
database.collection(Constants.KEY_COLLECTION_USERS)
.add(user)
.addOnSuccessListener(documentReference -> {
// loading(false);
String userName = binding.inputName.getText().toString();
preferenceManager.putBoolean(Constants.KEY_IS_SIGNED_IN, true);
preferenceManager.putString(Constants.KEY_USER_ID, documentReference.getId());
preferenceManager.putString(Constants.KEY_NAME, userName);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
})
.addOnFailureListener(exception -> {
showToast(exception.getMessage());
});
}