我试图从一个数据库中删除值,并将其放入另一个数据库中,但是每次执行时,应用程序都会崩溃,并且我一直会收到这个错误。
代码:
firebaseDatabase3= FirebaseDatabase.getInstance().getReference().child("User Ordered").child(PID);
firebaseDatabase3.keepSynced(true);
firebaseDatabase4= FirebaseDatabase.getInstance().getReference().child("Order Ready").child(PID);
firebaseDatabase4.keepSynced(true);
firebaseDatabase5= FirebaseDatabase.getInstance().getReference().child("User Order Ready").child(PID);
firebaseDatabase5.keepSynced(true);
void run1() {
firebaseDatabase4.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChildren()){
firebaseDatabase3.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
firebaseDatabase5.child(ID).setValue(firebaseDatabase3);
run3();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}else{
firebaseDatabase3.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
firebaseDatabase5.child(ID).setValue(firebaseDatabase3);
firebaseDatabase3.removeValue();
run3();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}错误
com.google.firebase.database.DatabaseException: Found a conflicting setters with name: setWallpaper (conflicts with setWallpaper defined on android.content.ContextWrapper)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(com.google.firebase:firebase-database@@19.3.0:521)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-database@@19.3.0:329)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.3.0:166)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$200(com.google.firebase:firebase-database@@19.3.0:47)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.serialize(com.google.firebase:firebase-database@@19.3.0:675)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.3.0:167)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$200(com.google.firebase:firebase-database@@19.3.0:47)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.serialize(com.google.firebase:firebase-database@@19.3.0:675)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.3.0:167)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$200(com.google.firebase:firebase-database@@19.3.0:47)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.serialize(com.google.firebase:firebase-database@@19.3.0:675)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.3.0:167)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$200(com.google.firebase:firebase-database@@19.3.0:47)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.serialize(com.google.firebase:firebase-database@@19.3.0:675)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.3.0:167)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$200(com.google.firebase:firebase-database@@19.3.0:47)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.serialize(com.google.firebase:firebase-database@@19.3.0:675)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.serialize(com.google.firebase:firebase-database@@19.3.0:167)
at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToPlainJavaTypes(com.google.firebase:firebase-database@@19.3.0:60)
at com.google.firebase.database.DatabaseReference.setValueInternal(com.google.firebase:firebase-database@@19.3.0:282)
at com.google.firebase.database.DatabaseReference.setValue(com.google.firebase:firebase-database@@19.3.0:159)
at com.example.shopkeeperapp.UserOrders$7$1.onDataChange(UserOrders.java:241)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.3.0:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.3.0:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.3.0:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.3.0:55)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)发布于 2020-05-06 02:23:16
要从Firebase数据库写入/读取的Java对象必须遵循JavaBean的属性命名约定,并且只能包含可以序列化到JSON或从JSON序列化的类型。
在您的示例中,您试图编写一个不符合这些要求的android.content.ContextWrapper对象。这发生在以下一行之一:
firebaseDatabase5.child(ID).setValue(firebaseDatabase3);这里的firebaseDatabase3是一个不符合要求的DatabaseReference。
似乎您希望将从一个位置读取到另一个位置的值写入到另一个位置,在这种情况下,您需要从DataSnapshot而不是DatabaseReference获取该值。
firebaseDatabase5.child(ID).setValue(dataSnapshot.getValue());发布于 2022-09-20 01:47:45
确保POJO遵循属性、方法和常量的编码风格标准;对POJO中不应该序列化的所有属性进行瞬态处理;Firebase中的属性必须与POJO中的属性完全相同;不要使用,例如: myAtributteURI或executeMyAtributteURI(),但是使用myAtributteUri和executeMyAtributteUri()。请记住,它将在Debug中运行,但它将在精简的、模糊的版本中运行。因此,遵循特定于火力基地的防护规则。在这个链接中:
https://firebase.google.com/docs/database/android/start#proguard
https://stackoverflow.com/questions/61622578
复制相似问题