2017-12-08 9 views
2

このエラーが発生しています "ユーザーは引数のないコンストラクタを定義しません。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

のJavaBeans require a no-argument constructorを提示することができます。

Javaクラスにコンストラクタがまったくない場合、デフォルトの引数なしコンストラクタがコンパイラによって自動的に追加されます。クラスにコンストラクタを定義すると、デフォルトの引数なしのコンストラクタはなくなります。あなたのコードで

は、あなたのusersクラスは引数が含まれ、このようなコンストラクタを定義しています

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

は限りそのコンストラクタが存在している、とあなたは引数なしのコンストラクタを定義しないと、そのクラスはしません1つ持っている。

これを解決するには、クラスからそのコンストラクタを削除、または手動でそれを引数なしのコンストラクタを追加する必要があり、次のいずれか

public users() {} 
+0

を感謝すごいです!感謝します! –

+0

しかしこれを行うことで、私はユーザーIDだけを取得し、ユーザーIDの下にある名前、住所などのすべてのデータは取得されません。 –

+0

クラスメンバーの名前は、データベース内の子の名前と一致する必要があります。または、JavaBeansの方法で一致するゲッターとセッターを提供する必要があります。 –

関連する問題