Не можете сохранить изменения в базе данных Firebase? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь создать нового пользователя и сохранить его в базе данных Firebase, но когда я нажимаю кнопку сохранения, в базе данных ничего не происходит, и поля editText не очищаются, как это должно быть после сохранения. Что мне здесь не хватает? Он не помещается в базу данных.

Это код для UserActivity

public class NewUserActivity extends AppCompatActivity {

private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mDatabaseReference;

EditText mEditTextName;
EditText mEditTextAge;
EditText mEditTextCity;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_user);

    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mDatabaseReference = mFirebaseDatabase.getReference().child("NewUser");
    mEditTextName = findViewById(R.id.et_name);
    mEditTextAge = findViewById(R.id.et_age);
    mEditTextCity = findViewById(R.id.et_city);

}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.save_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
        // TODO: should change to save_menu
        case R.id.btn_save:
            saveNewUser();
            Toast.makeText(this, "New User Saved!", Toast.LENGTH_LONG).show();
            cleanAll();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

public void saveNewUser() {
    String name = mEditTextName.getText().toString();
    String age = mEditTextAge.getText().toString();
    String city = mEditTextCity.getText().toString();

    NewUser newUser = new NewUser (name, age, city, "");
    mDatabaseReference.push().setValue(newUser);


// Error checking as suggested in the comments
    mDatabaseReference.child("users").setValue(newUser)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    // Write was successful!
                    Log.d("Saving", "Saved to the Database!");
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // Write failed
                    Log.d("Not Saving", "Failed to save to the Database!");
                }
            });




}

public void cleanAll() {
    mEditTextName.setText("");
    mEditTextAge.setText("");
    mEditTextCity.setText("");
}

}

Это файл макета

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res    /android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".Activities.NewUserActivity">

    <TextView
        android:id="@+id/tv_createUser_header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="@string/newUser"
        android:textSize="24sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/et_name"
        android:layout_width="379dp"
        android:layout_height="wrap_content"
        android:hint="@string/user_name"
        android:importantForAutofill="no"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toTopOf="@+id/et_age"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <EditText
        android:id="@+id/et_age"
        android:layout_width="379dp"
        android:layout_height="wrap_content"
        android:hint="@string/age"
        android:importantForAutofill="no"
        android:inputType="number"
        app:layout_constraintBottom_toTopOf="@+id/et_city"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />


    <Button
        android:id="@+id/btn_addPhoto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:text="@string/add_photo"
        app:layout_constraintBottom_toTopOf="@+id/et_name"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <ImageView
        android:id="@+id/iv_createnewuser"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:contentDescription="@string/user_profile_picture"
        android:scaleType="fitCenter"
        app:layout_constraintBottom_toTopOf="@+id/btn_addPhoto"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_createUser_header"
        tools:srcCompat="@tools:sample/avatars" />

    <EditText
        android:id="@+id/et_city"
        android:layout_width="379dp"
        android:layout_height="wrap_content"
        android:hint="@string/city"
        android:importantForAutofill="no"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toTopOf="@+id/et_dailygoal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/btn_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <Button
        android:id="@+id/btn_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@android:string/cancel"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

<EditText
        android:id="@+id/et_dailygoal"
        android:layout_width="379dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:ems="10"
        android:hint="@string/daily_steps"
        android:importantForAutofill="no"
        android:inputType="number"
        app:layout_constraintBottom_toTopOf="@+id/btn_save"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...