Я хочу отправить sh новые данные на узел в моей базе данных Firebase. Я могу сделать это без проблем до двух дней go. Я делаю некоторые изменения, но не в этом классе. Теперь, когда я пытаюсь получить sh новые данные, мое приложение вылетает. Я не могу понять причину этого.
public class MedicineUsageData {
String companyName;
String productName;
String drugSubstance;
String expireDate;
String barcodeNum;
String serialNum;
String partyNum;
String userName;
String dosage;
int userAge;
public MedicineUsageData() {}
public MedicineUsageData(String companyName, String productName, String drugSubstance, String expireDate, String barcodeNum, String serialNum, String partyNum, String userName, String dosage, int userAge) {
this.companyName = companyName;
this.productName = productName;
this.drugSubstance = drugSubstance;
this.expireDate = expireDate;
this.barcodeNum = barcodeNum;
this.serialNum = serialNum;
this.partyNum = partyNum;
this.userName = userName;
this.dosage = dosage;
this.userAge = userAge;
}
//getters and setters
}
Я только добавил значение "дозировка" в мой класс данных. Я пытался удалить его, но это не решает мою проблему.
public class DatabaseManager {
private DatabaseReference receiptDatabase;
public DatabaseManager(){
receiptDatabase = FirebaseDatabase.getInstance().getReference();
}
public DatabaseReference getReference(){ return receiptDatabase; }
public void writeNewUser(String username, String email, String name, String surname, String passwordHash, String birthDate) {
int age = StringOperations.getAge(birthDate);
User user = new User(username, email, name, surname,passwordHash,birthDate,age);
receiptDatabase.child("user").child(username).setValue(user);
}
public void writeNewMedicineUsage(Map<String, Object> medicineInfo, User user){
MedicineUsageData medicineUsageData = new MedicineUsageData(Objects.requireNonNull(medicineInfo.get("companyName")).toString(), Objects.requireNonNull(medicineInfo.get("medicineName")).toString(), Objects.requireNonNull(medicineInfo.get("drugSubstance")).toString(), Objects.requireNonNull(medicineInfo.get("expireDate")).toString(), Objects.requireNonNull(medicineInfo.get("barcodeNumber")).toString(), Objects.requireNonNull(medicineInfo.get("serialNumber")).toString(), Objects.requireNonNull(medicineInfo.get("partyNumber")).toString(), user.getUserName(), Objects.requireNonNull(medicineInfo.get("dosage")).toString(), Objects.requireNonNull(user.getAge()));
receiptDatabase.child("medicineUsageData").push().setValue(medicineUsageData);
}
}
Метод writeNewUser
в моем классе DatabaseManager
работает отлично. Но метод writeNewMedicineUsage
не работает. Я проверил отладку, поэтому я знаю, что мои данные не являются нулевыми. Этот метод отлично работает до двух дней go. Как я уже сказал, я только добавляю к этому новую ценность. Как я могу исправить эту проблему? Я проверил Stackoverflow, но не могу найти такую вещь.
Вот мой след стека
2020-03-19 22:27:22.870 30076-30076/com.track.medicine E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.track.medicine, PID: 30076
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.track.medicine/com.track.medicine.MainScreenActivity}: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getdrugSubstance
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getdrugSubstance
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(com.google.firebase:firebase-database@@19.2.1:477)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-database@@19.2.1:329)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.2.1:166)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToPlainJavaTypes(com.google.firebase:firebase-database@@19.2.1:60)
at com.google.firebase.database.DatabaseReference.setValueInternal(com.google.firebase:firebase-database@@19.2.1:282)
at com.google.firebase.database.DatabaseReference.setValue(com.google.firebase:firebase-database@@19.2.1:159)
at com.track.medicine.DatabaseManager.writeNewMedicineUsage(DatabaseManager.java:29)
at com.track.medicine.MainScreenActivity.onCreate(MainScreenActivity.java:74)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)