В моем проекте студии Android есть следующие классы. Классы NewTraineeActivity и Trainee. Я регистрирую данные стажера в базе данных реального времени Firebase.
Вот как выглядит класс Trainee:
Стажер публичного класса { частная строка firstName; частная строка LastName; частный возраст; частная двойная высота; частный строковый пол; личная строка электронной почты; частная строка гражданства; public Trainee(String firstName, String LastName, int age, двойной рост, String пол, String адрес электронной почты, String национальность) { это.ПервоеИмя = ПервоеИмя; this.lastName = последнее имя; this.age = возраст; this.height = высота; this.gender = пол; this.email = электронная почта; this.nationality = национальность; } публичная строка getFirstName() { вернуть имя; } public void setFirstName (String firstName) { это.ПервоеИмя = ПервоеИмя; } публичная строка getLastName() { вернуть фамилию; } public void setLastName (String LastName) { this.lastName = последнее имя; } общественный int getAge() { возвратный возраст; } public void setAge(int age) { this.age = возраст; } общественный двойной getHeight() { высота возврата; } public void setHeight(двойная высота) { this.height = высота; } публичная строка getGender() { вернуть пол; } public void setGender(Stringgender) { this.gender = пол; } публичная строка getEmail() { вернуть электронное письмо; } public void setEmail(String email) { this.email = электронная почта; } публичная строка getNationality() { вернуть гражданство; } public void setNationality (строковая национальность) { this.nationality = национальность; }
Это действие NewTraineeActivity
публичный класс NewTraineeActivity расширяет AppCompatActivity { частный EditText firstNameEditText, LastNameEditText, ageEditText, heightEditText, гендерEditText, электронная почтаEditText, национальностьEditText; частный профиль ImageViewImageView; частный Spinner гендерSpinner; частная кнопка RegisterTraineeButton; частный FirebaseAuth firebaseAuth; частная база данныхСправочная база данныхСправочная информация; @Override protected void onCreate(@Nullable Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_add_trainee); // Инициализируем Firebase firebaseAuth = FirebaseAuth.getInstance(); Пользователь FirebaseUser = firebaseAuth.getCurrentUser(); FirebaseApp.initializeApp(это); если (пользователь == ноль) { // Пользователь не аутентифицирован, перенаправляется для входа в систему или обрабатывается соответствующим образом Toast.makeText(this, «Пользователь не аутентифицирован», Toast.LENGTH_SHORT).show(); возвращаться; } dataReference = FirebaseDatabase.getInstance().getReference().child("стажеры").child(user.getUid()); // Инициализируем элементы пользовательского интерфейса firstNameEditText = findViewById(R.id.firstNameEditText); LastNameEditText = findViewById(R.id.lastNameEditText); ageEditText = findViewById(R.id.ageEditText); heightEditText = findViewById(R.id.heightEditText); гендерСпиннер = findViewById(R.id.genderSpinner); Адаптер ArrayAdapter = ArrayAdapter.createFromResource(this, R.array.gender_options, android.R.layout.simple_spinner_item); адаптер.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); гендерСпиннер.setAdapter(адаптер); emailEditText = findViewById(R.id.emailEditText); nationalityEditText = findViewById(R.id.nationalityEditText); ProfileImageView = findViewById(R.id.photoImageView); RegisterTraineeButton = findViewById(R.id.registerTraineeButton); RegisterTraineeButton.setOnClickListener(новый View.OnClickListener() { @Override public void onClick (Просмотр) { Log.d("NewTraineeActivity", "Нажата кнопка "Зарегистрироваться"); // Журнал, чтобы проверить, зарегистрировано ли событие нажатия кнопки зарегистрироватьсяСтажер(); } }); } частный недействительный RegisterTrainee () { Log.d("NewTraineeActivity", "Регистрация началась"); // Журнал, чтобы проверить, зарегистрировано ли событие нажатия кнопки Строка firstName = firstNameEditText.getText().toString().trim(); Строка LastName = LastNameEditText.getText().toString().trim(); int age = Integer.parseInt(ageEditText.getText().toString().trim()); двойная высота = Double.parseDouble(heightEditText.getText().toString().trim()); Строка гендер = гендерСпиннер.getSelectedItem().toString(); Строка электронной почты = emailEditText.getText().toString().trim(); Строка национальности = nationalityEditText.getText().toString().trim(); // Создаём объект Стажер с собранными данными Стажер Стажер = новый Стажер (имя, фамилия, возраст, рост, пол, адрес электронной почты, национальность); // Отправляем объект стажера в базу данных Firebase dataReference.push().setValue(trainee).addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task задача) { если (task.isSuccessful()) { // Регистрация прошла успешно, возвращаемся к основному действию Log.d("NewTraineeActivity", "Зарегистрировано"); // Журнал, чтобы проверить, зарегистрировано ли событие нажатия кнопки Toast.makeText(NewTraineeActivity.this, «Стажер успешно зарегистрирован», Toast.LENGTH_SHORT).show(); Намерение намерение = новое намерение (NewTraineeActivity.this, MainActivity.class); startActivity (намерение); заканчивать(); } еще { // Регистрация не удалась, обработайте ошибку Исключение e = Task.getException(); если (е != ноль) { Log.e("NewTraineeActivity", "Не удалось зарегистрировать: " + e.getMessage()); } еще { Log.e("NewTraineeActivity", "Регистрация не удалась без исключения."); } Toast.makeText(NewTraineeActivity.this, «Не удалось зарегистрировать стажера», Toast.LENGTH_SHORT).show(); } } }); }
Это мои правила базы данных Firebase в реальном времени:
{ "правила": { «.read»: правда, ".написать верно } } Это данные базы данных в реальном времени

Кроме того, это мой логарифм: когда я нажимаю кнопку регистрации трини, я не вижу ни регистрируемых данных, ни запуска onComplete в строке 100 для нового класса стажера. это единственный журнал, который я вижу

Какое здесь возможное решение? Мне нужно убедиться, что мой Интернет подключен, ссылка правильная и исключения обрабатываются
Мобильная версия