找到两个对财产具有相互矛盾的案例敏感性的getter或字段

时间:2017-04-09 19:15:39

标签: android firebase firebase-realtime-database

任何人都可以检查是否有错误,因为我总是收到错误

  

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)

感谢您提供任何帮助!

6 个答案:

答案 0 :(得分:8)

尝试修复字段和方法的大小写。 firstNamegetFirstName ...等

您的错误位于CV字段,其中该方法应为setCV以匹配字段的大小写,但是,您应该在Java命名争用后将其命名为cv。然后该方法为getsetCv

public String getCv() {
    return cv;
}

public void setCv(String cv) {
    this.cv = cv;
 }

我还建议不要将密码存储为对象的一部分。特别是如果它们是纯文本。您将密码发送到数据库以检查有效性或更新;阅读它们并将它们留在别处很少是个好主意

答案 1 :(得分:2)

只需确保将模型类中的所有变量都声明为 private

private String name;

代替

String name;

答案 2 :(得分:0)

  1. 兄弟,您班级SignupTeacher中的所有变量都是私有的。
  2. 只需确保您在此类中使用的变量与您在firebase中使用的变量一样。查看我的案例

    this is fire base objects
  3. This is my android class

    1. 并按照您在firebase中使用的顺序将变量放入您的类中 谢谢

答案 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;
}

}

参考https://stackoverflow.com/a/45809982/9315431

答案 5 :(得分:0)

您可以使用 @PropertyName 注释

映射名称而不更改变量名称

科特琳例如:

enter image description here

data class Category(
    @PropertyName("Image")
    var img:String="",
    @PropertyName("Names")
    var name:String="")