首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发现名称为: setWallpaper的冲突设置者

发现名称为: setWallpaper的冲突设置者
EN

Stack Overflow用户
提问于 2020-05-05 20:34:08
回答 2查看 134关注 0票数 1

我试图从一个数据库中删除值,并将其放入另一个数据库中,但是每次执行时,应用程序都会崩溃,并且我一直会收到这个错误。

代码:

代码语言:javascript
复制
 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) {

        }
    });


}

错误

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-06 02:23:16

要从Firebase数据库写入/读取的Java对象必须遵循JavaBean的属性命名约定,并且只能包含可以序列化到JSON或从JSON序列化的类型。

在您的示例中,您试图编写一个不符合这些要求的android.content.ContextWrapper对象。这发生在以下一行之一:

代码语言:javascript
复制
firebaseDatabase5.child(ID).setValue(firebaseDatabase3);

这里的firebaseDatabase3是一个不符合要求的DatabaseReference

似乎您希望将从一个位置读取到另一个位置的值写入到另一个位置,在这种情况下,您需要从DataSnapshot而不是DatabaseReference获取该值。

代码语言:javascript
复制
firebaseDatabase5.child(ID).setValue(dataSnapshot.getValue());
票数 2
EN

Stack Overflow用户

发布于 2022-09-20 01:47:45

确保POJO遵循属性、方法和常量的编码风格标准;对POJO中不应该序列化的所有属性进行瞬态处理;Firebase中的属性必须与POJO中的属性完全相同;不要使用,例如: myAtributteURI或executeMyAtributteURI(),但是使用myAtributteUri和executeMyAtributteUri()。请记住,它将在Debug中运行,但它将在精简的、模糊的版本中运行。因此,遵循特定于火力基地的防护规则。在这个链接中:

https://firebase.google.com/docs/database/android/start#proguard

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61622578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档