java - 输入已更新到数据库中的错误字段
问题描述
我已经完成了编码,我想更新配置文件。但是用户输入的输入被放置在数据库内的错误字段中。我不知道什么时候出错。
性别显示电话号码,电话号码显示“性别”如何解决?
这是更新功能。
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;
}
}
解决方案
在填充用户时,您只是在代码中输入了错误的顺序。正如在您的类中可以看到的那样,您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();
推荐阅读
- amazon-web-services - 为不同用户使用不同权限保护 AWS S3 中文件的最佳方法是什么?
- python - 每 11 秒填充一次时间戳间隔
- java - 无法从 Map.Entry 转换
到字符串 - javascript - 将 js 承诺链转换为同步调用?
- uwp - Gaze Interaction 是否适用于使用其内置眼动仪的 HoloLens 2 上的 UWP 应用
- javascript - 如何使用 jQuery 定位 SVG 图像内的锚元素
- c - 尝试使用 strtok 从文件中分离字符串并存储在结构数组中
- html - 保持列之间的间隙:Bootstrap 3.3.7
- sql - 如果 ID 同时具有值 A 和 B 它应该返回 AB
- oracle-apex - 内联对话框区域中的粘滞按钮