Room Persistenceライブラリを介してAndroidアプリにデータベースを追加しようとしていますが、このエラーが発生しています:
エラー:エンティティとPojoには、使用可能なパブリックコンストラクターが必要です。空のコンストラクターまたはパラメーターがフィールドに一致するコンストラクター(名前とタイプ)を持つことができます。次のコンストラクターを試しましたが、一致しませんでした:User(int、Java.lang.String、Java.lang.String、int、int、int、Java.lang.String)-> [param:id-> matched field:unmatched 、param:name->一致したフィールド:unmatched、param:gender->一致したフィールド:unmatched、param:age->一致したフィールド:unmatched、param:weight->一致したフィールド:unmatched、param:height->一致したフィールド:unmatched 、param:workout->一致したフィールド:unmatched]
ここに私のコードがあります:
@Entity
public class User {
@PrimaryKey
private int userId;
private String userName;
private String userGender;
private int userAge;
private int userWeight;
private int userHeight;
private String workoutPlan;
public User(int id, String name, String gender, int age, int weight, int height, String workout) {
this.userId = id;
this.userName = name;
this.userGender = gender;
this.userAge = age;
this.userWeight = weight;
this.userHeight = height;
this.workoutPlan = workout;
} ...
誰かが私が間違っていることや逃したことを教えてもらえますか?
エンティティー属性と一致するようにパラメーターの名前を変更してください。
public User(int userId, String userName, String userGender, int userAge, int userWeight, int userHeight, String workoutPlan) {
this.userId = userId;
this.userName = userName;
this.userGender = userGender;
this.userAge = userAge;
this.userWeight = userWeight;
this.userHeight = userHeight;
this.workoutPlan = workoutPlan;
} ...
永続化のために、RoomでJavaBeans規則を使用します。詳細: https://developer.Android.com/training/data-storage/room/defining-data#Java
また、これを試すことができます:
@Ignore
public User(int userId, String userName, String userGender, int userAge, int
userWeight, int userHeight, String workoutPlan ) {
this.userId = userId;
this.userName = userName;
this.userGender = userGender;
this.userAge = userAge;
this.userWeight = userWeight;
this.userHeight = userHeight;
this.workoutPlan = workoutPlan;
}
public User(String userName, String userGender, int userAge, int
userWeight, int userHeight, String workoutPlan) {
this.userName = userName;
this.userGender = userGender;
this.userAge = userAge;
this.userWeight = userWeight;
this.userHeight = userHeight;
this.workoutPlan = workoutPlan;
}
空のコンストラクタを追加するだけで、この同じ問題を回避できました。 public User(){}
私もこのエラーを受け取りました。コンストラクターの属性の1つだけが一致しなかったため、かなり混乱していました。私の変数(コンストラクター外)の名前はmURLで、コンストラクター内のURLと一致させようとしました。
代わりに、外部変数をmUrlに設定する必要がありました。はい、最後の2文字を大文字にすると、そのエラーが発生しました。設定this.mUrl = url
の代わりに this.mURL = url
はエラーを解決しました。