首页 > 解决方案 > 输入已更新到数据库中的错误字段

问题描述

我已经完成了编码,我想更新配置文件。但是用户输入的输入被放置在数据库内的错误字段中。我不知道什么时候出错。

性别显示电话号码,电话号码显示“性别”如何解决?

这是更新功能。

private void showUpdateDialog(String phoneNumber) {


        //init dialog
        bottomSheetDialog = new BottomSheetDialog(this);
        bottomSheetDialog.setTitle("one more step!");
        bottomSheetDialog.setCanceledOnTouchOutside(false);
        bottomSheetDialog.setCancelable(false);
        View sheetView = getLayoutInflater().inflate(R.layout.layout_update_information, null);

        Button btn_update = sheetView.findViewById(R.id.btn_update);
        TextInputEditText edt_name = sheetView.findViewById(R.id.edt_name);
        TextInputEditText edt_email = sheetView.findViewById(R.id.edt_email);
        TextInputEditText edt_address = sheetView.findViewById(R.id.edt_address);
        TextInputEditText edt_gender = sheetView.findViewById(R.id.edt_gender);

        btn_update.setOnClickListener(view -> {

            if (!dialog.isShowing())
                dialog.dismiss();

            User user = new User(edt_name.getText().toString(),
                    edt_email.getText().toString(),
                    edt_address.getText().toString(),
                    edt_gender.getText().toString(),
                    phoneNumber);
            userRef.document(phoneNumber)
                    .set(user)
                    .addOnSuccessListener(aVoid -> {
                        bottomSheetDialog.dismiss();
                        if (dialog.isShowing())
                            dialog.dismiss();
                        Toast.makeText(HomeActivity.this, " Thank You", Toast.LENGTH_SHORT).show();
                    }).addOnFailureListener(e -> {
                if (dialog.isShowing())
                    dialog.dismiss();
                bottomSheetDialog.dismiss();
                Toast.makeText(HomeActivity.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
            });

        });

        bottomSheetDialog.setContentView(sheetView);
        bottomSheetDialog.show();

    }

更新布局信息

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical"
    android:padding="8dp">



    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/edt_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:hint="Your name" />
    </com.google.android.material.textfield.TextInputLayout>



    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/edt_email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:hint="Your email" />
    </com.google.android.material.textfield.TextInputLayout>


    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/edt_address"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:hint="Your address" />
    </com.google.android.material.textfield.TextInputLayout>


    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/edt_gender"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:hint="Your gender" />
    </com.google.android.material.textfield.TextInputLayout>


    <Button
        android:id="@+id/btn_update"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/txt_skip"
        android:background="@drawable/button"
        android:text="Update Profile" />

</LinearLayout>

用户.java

public class User {
    private String name,email,address,phoneNumber,gender;

    public User(){

    }

    public User(String name, String email, String address, String phoneNumber, String gender){
        this.name= name;
        this.email=email;
        this.address=address;
        this.phoneNumber=phoneNumber;
        this.gender=gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


在填充用户时,您只是在代码中输入了错误的顺序。正如在您的类中可以看到的那样,您User的构造函数采用as 参数phoneNumber之前的gender参数。但是在你的new User(...)初始化中你放了edt_gender.getText().toString()之前phoneNumber

像这样更改您的代码:

void showUpdateDialog(String phoneNumber) {


        //init dialog
        bottomSheetDialog = new BottomSheetDialog(this);
        bottomSheetDialog.setTitle("one more step!");
        bottomSheetDialog.setCanceledOnTouchOutside(false);
        bottomSheetDialog.setCancelable(false);
        View sheetView = getLayoutInflater().inflate(R.layout.layout_update_information, null);

        Button btn_update = sheetView.findViewById(R.id.btn_update);
        TextInputEditText edt_name = sheetView.findViewById(R.id.edt_name);
        TextInputEditText edt_email = sheetView.findViewById(R.id.edt_email);
        TextInputEditText edt_address = sheetView.findViewById(R.id.edt_address);
        TextInputEditText edt_gender = sheetView.findViewById(R.id.edt_gender);

        btn_update.setOnClickListener(view -> {

            if (!dialog.isShowing())
                dialog.dismiss();

            User user = new User(edt_name.getText().toString(),
                    edt_email.getText().toString(),
                    edt_address.getText().toString(),
                    phoneNumber,
                    edt_gender.getText().toString(),
                    );
            userRef.document(phoneNumber)
                    .set(user)
                    .addOnSuccessListener(aVoid -> {
                        bottomSheetDialog.dismiss();
                        if (dialog.isShowing())
                            dialog.dismiss();
                        Toast.makeText(HomeActivity.this, " Thank You", Toast.LENGTH_SHORT).show();
                    }).addOnFailureListener(e -> {
                if (dialog.isShowing())
                    dialog.dismiss();
                bottomSheetDialog.dismiss();
                Toast.makeText(HomeActivity.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
            });

        });

        bottomSheetDialog.setContentView(sheetView);
        bottomSheetDialog.show();

推荐阅读