检索数据时Android DatabaseException错误

标签 android firebase firebase-realtime-database

我正在尝试学习如何将 Firebase 实现到以前使用 SQL 数据库的现有项目中。我的写入代码工作正常,但我的读取在下面抛出 DatabaseException 错误。

com.google.firebase.database.DatabaseException: Found a conflicting setters with name: setWallpaper (conflicts with setWallpaper defined on android.content.ContextWrapper)

我做了很多研究,只能在写入数据库时​​找到对这个错误的引用,而不是从数据库中读取,所以我很困惑我在代码中做了什么导致了这个错误即将发生。方法代码如下。

protected void lastFive() {
    final DatabaseReference gameRef = database.getReference("Games");
    final List<User> gamesList = new ArrayList<>();
    gameRef.orderByChild("Date").limitToLast(5).addValueEventListener (new ValueEventListener ( ) {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            gamesList.clear ();
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren ()){
                User user = postSnapshot.getValue(User.class);
                gamesList.add (user);
                System.out.println(user.getName () + " : " + user.getScore ());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
}

错误似乎引用的方法中的行是:

User user = postSnapshot.getValue(User.class);

我只断断续续地在 Android 上工作了几个月,而 Firebase 还不到一半,所以这可能存在一些我根本看不到的明显错误。 FWIW,此方法旨在显示最近在应用程序上玩过的 5 场比赛的用户名和分数。我有点担心输出会是什么样子,我知道这超出了这个问题的范围,但在我可以读取数据之前我什至无法处理它。非常感谢任何帮助或建议。

正在按要求添加用户代码。

public class User extends Application {

    //private variable
    private static User globalVar;

    //variables
    String _id;
    String _name;
    int _score;
    String _date;
    String _email;

    // Empty constructor
    public User(){}

    // constructor
    public User(String id, String name, int score, String date){
        this._id = id;
        this._name = name;
        this._score = score;
        this._date = date;
    }

    public User(String id, int score){
        this._id = id;
        this._score = score;
    }

    public User(String id){
        this._id = id;
    }

    public User(int score, String date){
        this._score = score;
    }

    // getting ID
    public String getID(){
        return this._id;
    }

    // setting id
    public void setID(String id){
        this._id = id;
    }

    // getting name
    public String getName(){
        return this._name;
    }

    // setting name
    public void setName(String name){
        this._name = name;
    }

    // getting scores
    public int getScore(){ return this._score; }

    // setting scores
    public void setScore(int score){ this._score = score; }

    // getting name
    public String getDate(){
        return this._date;
    }

    // setting name
    public void setDate(String date){
        this._date = date;
    }

    // getting email
    public String getEmail(){
        return this._email;
    }

    // setting email
    public void setEmail(String email){
        this._email = email;
    }

    public static synchronized User getGlobalVar(){
        if(globalVar == null){
            globalVar = new User();
        }
        return globalVar;
    }
}

最佳答案

除了发布的异常,我可以得出结论,您的 User.class 中的字段没有 getter/setter。理想情况下,您的 User class 应该是这样的:

   public class User{
   private String name;

   public String getName(){
   return name;
   }

   public void setName(String name){
   this.name = name;
   }
}

请验证您是否具有这种方式的类结构。

关于检索数据时Android DatabaseException错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46046761/

相关文章:

android - 适用于 Android 的第 3 方平台 sdk 或库概述

android - 获取适用于 Android Firebase 的 SHA-1

Firebase v3 createUserWithEmailAndPassword .then Promise

android - 添加 kotlin-kapt 导致 Can not resolve symbol DaggerApplicationComponent 错误

java - 如果选中前一个复选框(其他复选框首先被禁用),如何在回收器 View 中启用其他复选框?

javascript - Firebase 获取单个项目

javascript - Firestore : How can I re-order a collection I already have a reference to?

firebase - 无法使用cli命令登录Firebase

javascript - Firebase 和 Angular 2 : Can I create request for filter by value

java - 当我尝试将 Firebase 数据库中的项目包含在其项目列表中时,如何修复微调器不断关闭并重新打开的问题