请在将其标记为重复之前了解我的场景。我搜索了一段时间,但没有在网站上找到答案。
我正在使用 setValue(Modelclass object) 通过 fragment 将数据发送到 Firebase,但数据并未以应有的格式存储。
fragment .java
public class FragmentSelectRoute extends Fragment {
RadioGroup radioGroup;
private int routeId;
private String routeTitle;
Button btnFinish;
// Firebase
FirebaseDatabase database;
DatabaseReference studentRef;
// FirebaseAUth
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
public FragmentSelectRoute() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_select_route, container, false);
database = FirebaseDatabase.getInstance();
studentRef = database.getReference(Common.STUDENT_REFERENCE);
radioGroup = view.findViewById(R.id.radio_select_route);
btnFinish = view.findViewById(R.id.btn_finish);
Bundle bundle = this.getArguments();
String firstName = bundle.getString("firstName");
String lastName = bundle.getString("lastName");
String regNo = bundle.getString("regNo");
String gender = bundle.getString("gender");
String campus = bundle.getString("campus");
String dept = bundle.getString("dept");
String program = bundle.getString("program");
String semester = bundle.getString("semester");
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.rdbtn_route_one:
routeId = 1;
routeTitle = "Lari Adda";
break;
case R.id.rdbtn_route_two:
routeId = 2;
routeTitle = "Rehman Plaza";
break;
case R.id.rdbtn_route_three:
routeId = 3;
routeTitle = "Aziz Bhatti Town";
break;
case R.id.rdbtn_route_four:
routeId = 4;
routeTitle = "Gill Wala";
break;
case R.id.rdbtn_route_five:
routeId = 5;
routeTitle = "Mela Mandi Ground";
break;
case R.id.rdbtn_route_six:
routeId = 6;
routeTitle = "Bhera";
break;
case R.id.rdbtn_route_seven:
routeId = 7;
routeTitle = "Jahurabad";
break;
case R.id.rdbtn_route_eight:
routeId = 8;
routeTitle = "Nihang";
break;
case R.id.rdbtn_route_nine:
routeId = 9;
routeTitle = "Farooka";
break;
case R.id.rdbtn_route_ten:
routeId = 10;
routeTitle = "Silanwali";
break;
case R.id.rdbtn_route_eleven:
routeId = 11;
routeTitle = "Chiniot";
break;
case R.id.rdbtn_route_twelve:
routeId = 12;
routeTitle = "Laliyan";
break;
case R.id.rdbtn_route_thirteen:
routeId = 13;
routeTitle = "Kandiwal";
break;
case R.id.rdbtn_route_fourteen:
routeId = 14;
routeTitle = "No Title";
break;
case R.id.rdbtn_route_fifteen:
routeId = 15;
routeTitle = "No Title";
break;
case R.id.rdbtn_route_sixteen:
routeId = 16;
routeTitle = "Alfarid Garden";
break;
}
}
});
btnFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
registerUserToFirebase(firstName, lastName, regNo, gender, campus, dept
, program, semester, routeId, routeTitle);
}
});
return view;
}
private void registerUserToFirebase(String firstName, String lastName, String regNo,
String gender, String campus, String dept, String program,
String semester, int routeId, String routeTitle) {
StudentModel studentModel = new StudentModel();
studentModel.setFirstName(firstName);
studentModel.setLastName(lastName);
studentModel.setRegNo(regNo);
studentModel.setGender(gender);
studentModel.setCampus(campus);
studentModel.setDept(dept);
studentModel.setProgram(program);
studentModel.setSemester(semester);
studentModel.setRouteId(routeId);
studentModel.setRouteTitle(routeTitle);
if (FirebaseAuth.getInstance().getCurrentUser() != null){
studentRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(studentModel)
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getActivity(), "could not send data"
+ e.getMessage(), Toast.LENGTH_SHORT).show();
}
}).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(getActivity(), "Registarion Successfull", Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(getActivity(), "User is null", Toast.LENGTH_SHORT).show();
}
} }
StudentModel.java
public class StudentModel {
private String firstName;
private String lastName;
private String regNo;
private String gender;
private String campus;
private String dept;
private String program;
private String semester;
public String getRouteTitle() {
return routeTitle;
}
public void setRouteTitle(String routeTitle) {
this.routeTitle = routeTitle;
}
private String routeTitle;
private int routeId;
public StudentModel() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getRegNo() {
return regNo;
}
public void setRegNo(String regNo) {
this.regNo = regNo;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getCampus() {
return campus;
}
public void setCampus(String campus) {
this.campus = campus;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getProgram() {
return program;
}
public void setProgram(String program) {
this.program = program;
}
public String getSemester() {
return semester;
}
public void setSemester(String semester) {
this.semester = semester;
}
public int getRouteId() {
return routeId;
}
public void setRouteId(int routeId) {
this.routeId = routeId;
}}
数据应该存储在模型类中:
UID
firstName :
lastName :
regNo :
gender :
campus :
dept :
program :
semester :
routeTitle :
routeId:
相反,它存储为:
最佳答案
“StudentModel”类中字段的顺序无关紧要,因为当您将类的新实例添加到 Firebase 实时数据库时,所有字段都会自动按字母顺序排序。除此之外,在“studentModel”对象上调用 setter 的顺序也无关紧要。 Firebase 控制台始终按字母顺序对字段进行排序。看,该字段以字母“c”开头,第二个以“d”开头,依此类推,直到最后一个字段以“s”开头。遗憾的是,无法在 Firebase 控制台中更改此顺序。如果需要,您可以将类(class)中的顺序更改为按字母顺序排列并匹配数据库中的顺序,这很好,但在我看来这没有任何意义。
关于java - 火力地堡 : Data not stored in the correct format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67135871/