用户没有定义任何参数构造函数

时间:2017-12-08 01:57:21

标签: android firebase firebase-realtime-database

我一直收到这个错误 “用户没有定义无参数构造函数。如果您使用的是ProGuard,请确保不剥离这些构造函数。”尝试了一切,不知道为什么会这样。

public void retrievingUserInfo(){

    databaseUserID.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //clearing the previous userinfo list
            Users_Info.clear();

            //iterating through all the nodes
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                //getting userinfo
                users userinfo = postSnapshot.getValue(users.class);
                //adding userinfo to the list
                Users_Info.add(userinfo);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

users.class

@Keep
public class users {

    public String user_id, address, contact, name;

    public users(String user_id, String address, String contact,String name) 
    {}


}

1 个答案:

答案 0 :(得分:13)

JavaBeans require a no-argument constructor将会出现。

当Java类根本没有构造函数时,编译器会自动添加一个默认的无参数构造函数。在类中定义任何构造函数的那一刻,默认的no-arg构造函数就会消失。

在您的代码中,您的users类定义了包含参数的构造函数:

public users(String user_id, String address, String contact,String name) 
{}

只要该构造函数存在,并且您没有定义no-arg构造函数,该类就没有。

要解决此问题,您需要从类中删除该构造函数,或者手动向其添加no-arg构造函数:

public users() {}