web-dev-qa-db-fra.com

les utilisateurs ne définissent aucun constructeur d'argument

j'ai continué à recevoir cette erreur "les utilisateurs ne définissent pas de constructeur sans argument. Si vous utilisez ProGuard, assurez-vous que ces constructeurs ne sont pas supprimés." J'ai tout essayé, je ne sais pas pourquoi cela se produit.

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) 
    {}


}
9
Marvin Gorres

JavaBeans nécessite un constructeur sans argument pour être présent.

Lorsqu'une classe Java n'a pas de constructeurs du tout, un constructeur no-arg par défaut lui est automatiquement ajouté par le compilateur. Dès que vous définissez un constructeur dans la classe, le no-arg par défaut constructeur s'en va.

Dans votre code, votre classe users définit un tel constructeur qui contient des arguments:

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

Tant que ce constructeur est présent, et que vous ne définissez pas de constructeur sans argument, cette classe n'en aura pas.

Pour résoudre ce problème, vous devez soit supprimer ce constructeur de la classe, soit lui ajouter manuellement un constructeur sans argument:

public users() {}
14
Doug Stevenson