任何人都可以检查是否有错误,因为我总是收到错误
com.google.firebase.database.DatabaseException:找到两个对属性具有冲突区分大小写的getter或字段。
这是我的代码signupTeacherActivity:
public class signupTeacher extends AppCompatActivity {
EditText userfirstname,userlastname, useremail,userpassword,userconfirmpassword, CV,city;
private DatabaseReference mDatabase;
private FirebaseAuth mAuth;
Spinner spinner;
String defaultuserprofileimg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup_teacher);
getSupportActionBar().setTitle("Sign Up");
findViewByIds();
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.subject_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
public void signUpUser(View view) {
if(useremail.getText().toString().length()==0 || userpassword.getText().toString().length()==0||userfirstname.getText().length()==0 ||userconfirmpassword.getText().length()==0 ||userlastname.getText().length()==0){
Toast.makeText(signupTeacher.this, "Please enter all the fields to proceed further.",
Toast.LENGTH_SHORT).show();
}else {
if(spinner.getSelectedItem().toString().equals("Select a Subject")){
Toast.makeText(signupTeacher.this, "Please select a valid Subject.", Toast.LENGTH_LONG).show();
}
else {
mAuth = FirebaseAuth.getInstance();
mAuth.createUserWithEmailAndPassword(useremail.getText().toString(), userpassword.getText().toString())
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("demo", "createUserWithEmail:onComplete:" + task.isSuccessful());
if (!task.isSuccessful()) {
Toast.makeText(signupTeacher.this, task.getException().toString(),
Toast.LENGTH_SHORT).show();
} else {
mDatabase = FirebaseDatabase.getInstance().getReference();
Teacher user = new Teacher(userfirstname.getText().toString(), userlastname.getText().toString(), useremail.getText().toString(), userpassword.getText().toString() , CV.getText().toString(), spinner.getSelectedItem().toString(), city.getText().toString(),task.getResult().getUser().getUid().toString(), defaultuserprofileimg);
mDatabase.child("Teachers").child(task.getResult().getUser().getUid().toString()).setValue(user);
Intent i = new Intent(signupTeacher.this, MainActivity.class);
startActivity(i);
Toast.makeText(signupTeacher.this, "Succesfully registered. Please login with the created credentials",
Toast.LENGTH_LONG).show();
mAuth = FirebaseAuth.getInstance();
mAuth.signOut();
finish();
}
}
});
}
}
}
public void goToLogin(View view) {
Intent i=new Intent(signupTeacher.this,MainActivity.class);
startActivity(i);
finish();
}
private void findViewByIds() {
userfirstname= (EditText)findViewById(R.id.firstname);
userlastname= (EditText) findViewById(R.id.lastname);
userpassword= (EditText) findViewById(R.id.password);
userconfirmpassword= (EditText)findViewById(R.id.confirmpassword);
useremail= (EditText) findViewById(R.id.email);
spinner = (Spinner) findViewById(R.id.spSubject);
CV = (EditText) findViewById(R.id.cv);
city = (EditText) findViewById(R.id.City);
}}
我的班老师:
public class Teacher implements Serializable {
String firstlame,lastname,useremail,userpassword, CV, spinner, city, userkey,userimageuri;
public String getFirstlame() {
return firstlame;
}
public void setFirstlame(String firstlame) {
this.firstlame = firstlame;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getUseremail() {
return useremail;
}
public void setUseremail(String useremail) {
this.useremail = useremail;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
public String getCv() {
return CV;
}
public void setCv(String CV) {
this.CV = CV;
}
public String getSpinner() {
return spinner;
}
public void setSpinner(String spinner) {
this.spinner = spinner;
}
public String getCity() {return city; }
public void setCity(String city) {
this.city = city;
}
public String getUserkey() {
return userkey;
}
public void setUserkey(String userkey) {
this.userkey = userkey;
}
public String getUserimageuri() {
return userimageuri;
}
public void setUserimageuri(String userimageuri) {
this.userimageuri = userimageuri;
}
public Teacher(String firstlame, String lastname, String useremail, String userpassword, String CV, String spSubject , String City, String userkey, String userimageuri ) {
this.firstlame = firstlame;
this.lastname = lastname;
this.useremail = useremail;
this.userpassword = userpassword;
this.CV = CV;
this.spinner = spSubject;
this.city = City;
this.userkey=userkey;
this.userimageuri=userimageuri;
}
public Teacher(){
}}
logcat的:
04-09 21:41:30.570 12739-12739/com..example.*.*hers E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.faay.hireteachers, PID: 12739
com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: cv
at com.google.android.gms.internal.zzbqi$zza.zzjs(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.<init>(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzi(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaw(Unknown Source)
at com.google.firebase.database.DatabaseReference.zza(Unknown Source)
at com.google.firebase.database.DatabaseReference.setValue(Unknown Source)
at com.example.faay.hireteachers.signupTeacher$1.onComplete(signupTeacher.java:63)
at com.google.android.gms.tasks.zzc$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
感谢您提供任何帮助!
答案 0 :(得分:8)
尝试修复字段和方法的大小写。 firstName
,getFirstName
...等
您的错误位于CV
字段,其中该方法应为setCV
以匹配字段的大小写,但是,您应该在Java命名争用后将其命名为cv
。然后该方法为get
或setCv
public String getCv() {
return cv;
}
public void setCv(String cv) {
this.cv = cv;
}
我还建议不要将密码存储为对象的一部分。特别是如果它们是纯文本。您将密码发送到数据库以检查有效性或更新;阅读它们并将它们留在别处很少是个好主意
答案 1 :(得分:2)
只需确保将模型类中的所有变量都声明为 private
即
private String name;
代替
String name;
答案 2 :(得分:0)
答案 3 :(得分:0)
我刚刚得到了同样的问题,但我解决它 首先请检查您是否具有与firebase jason表变量相同的变量名。 在您的情况下,CV在Java类中作为Cv返回,因此请先检查该变量CV的firebase jason表名称,然后更正它。
答案 4 :(得分:0)
Firebase JSON序列化名称由注释控制
PropertyName(如果名称以大写字母开头)。您有两个选择
1)投诉投诉
2)使用@PropertyName(“投诉”)
public class Order implements Serializable {
private String Complain;
public Order() {
Complain = "";
}
@PropertyName("Complain")
public String getComplain() {
return Complain;
}
@PropertyName("Complain")
public void setComplain(String complain) {
Complain = complain;
}
}
答案 5 :(得分:0)