java.lang.IllegalArgumentException:只能从域复制有效的托管对象
在从服务器读取数据后,我使用realm来存储数据,但当我尝试在realm中存储数据时,我得到了“java.lang.IllegalArgumentException:'value'不是有效的托管对象” 有我的源代码登录类java.lang.IllegalArgumentException:只能从域复制有效的托管对象,java,android,json,realm,Java,Android,Json,Realm,在从服务器读取数据后,我使用realm来存储数据,但当我尝试在realm中存储数据时,我得到了“java.lang.IllegalArgumentException:'value'不是有效的托管对象” 有我的源代码登录类 if (response.isSuccessful()) { if (response.body().getMessage().equals("found")) { Us
if (response.isSuccessful()) {
if (response.body().getMessage().equals("found")) {
User user = response.body().getData().get(0);
Log.v("Data User ","- "+user.toString());
saveUser(user);
Intent intent = new Intent(SignInActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(SignInActivity.this, "Username or wrong Password", Toast.LENGTH_SHORT).show();
}
private void saveUser(User user) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(User.class);
realm.copyToRealm(user);
realm.commitTransaction();
MainApplication.getInstance(SignInActivity.this).setLoginUser(user);
}
public class User extends RealmObject implements Serializable {
@PrimaryKey
@SerializedName("id")
@Expose
private String id;
@SerializedName("first_name")
@Expose
private String first_name;
@SerializedName("last_name")
@Expose
private String last_name;
@SerializedName("email")
@Expose
private String email;
@SerializedName("number")
@Expose
private String number;
@SerializedName("password")
@Expose
private String password;
@SerializedName("adress")
@Expose
private String adress;
@SerializedName("created_on")
@Expose
private String createdOn;
@SerializedName("reg_id")
@Expose
private String regId;
@SerializedName("status")
@Expose
private String status;
private long mPaySaldo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstname;
}
public void setFirstName(String firstname) {
this.firstname = firstname;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
this.number = number;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAdress() {
return alamat;
}
public void setAdress(String alamat) {
this.alamat = alamat;
}
public String getCreatedOn() {
return createdOn;
}
public void setCreatedOn(String createdOn) {
this.createdOn = createdOn;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public long getmPaySaldo() {
return mPaySaldo;
}
public void setmPaySaldo(long mPaySaldo) {
this.mPaySaldo = mPaySaldo;
}
}
loginUser = realm.copyFromRealm(MangJekApplication.getInstance(this).getLoginUser());
这门私人课
if (response.isSuccessful()) {
if (response.body().getMessage().equals("found")) {
User user = response.body().getData().get(0);
Log.v("Data User ","- "+user.toString());
saveUser(user);
Intent intent = new Intent(SignInActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(SignInActivity.this, "Username or wrong Password", Toast.LENGTH_SHORT).show();
}
private void saveUser(User user) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(User.class);
realm.copyToRealm(user);
realm.commitTransaction();
MainApplication.getInstance(SignInActivity.this).setLoginUser(user);
}
public class User extends RealmObject implements Serializable {
@PrimaryKey
@SerializedName("id")
@Expose
private String id;
@SerializedName("first_name")
@Expose
private String first_name;
@SerializedName("last_name")
@Expose
private String last_name;
@SerializedName("email")
@Expose
private String email;
@SerializedName("number")
@Expose
private String number;
@SerializedName("password")
@Expose
private String password;
@SerializedName("adress")
@Expose
private String adress;
@SerializedName("created_on")
@Expose
private String createdOn;
@SerializedName("reg_id")
@Expose
private String regId;
@SerializedName("status")
@Expose
private String status;
private long mPaySaldo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstname;
}
public void setFirstName(String firstname) {
this.firstname = firstname;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
this.number = number;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAdress() {
return alamat;
}
public void setAdress(String alamat) {
this.alamat = alamat;
}
public String getCreatedOn() {
return createdOn;
}
public void setCreatedOn(String createdOn) {
this.createdOn = createdOn;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public long getmPaySaldo() {
return mPaySaldo;
}
public void setmPaySaldo(long mPaySaldo) {
this.mPaySaldo = mPaySaldo;
}
}
loginUser = realm.copyFromRealm(MangJekApplication.getInstance(this).getLoginUser());
此json响应来自webservice
{"message":"found","data":[{"id":"U5","first_name":"Alexa","last_name":"Ferdiansyah","email":"admin@gmail.com","number":"098765432123","password":"dd94709528bb1c83d08f3088d4043f4742891f4f","addres":"niten","created_on":"2020-09-22 14:30:52","reg_id":"f1ZtyfkoRB6oUTKSeP-Zal:APA91bGwuLKoudLnZWL8UPT-HEdw-eCUAe9AIQBi2jbBVIe8TYN0luixtuYdCIoTkqaD0CDpcZju0heZ7BBOhyFPj-7Xq5WNLKDjEoNjSEsMAaSboVmGcA3nRgP-eezvb_1i3cfWMEbX","status":"1","saldo":"0"}]}
这是我的模型课
if (response.isSuccessful()) {
if (response.body().getMessage().equals("found")) {
User user = response.body().getData().get(0);
Log.v("Data User ","- "+user.toString());
saveUser(user);
Intent intent = new Intent(SignInActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(SignInActivity.this, "Username or wrong Password", Toast.LENGTH_SHORT).show();
}
private void saveUser(User user) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(User.class);
realm.copyToRealm(user);
realm.commitTransaction();
MainApplication.getInstance(SignInActivity.this).setLoginUser(user);
}
public class User extends RealmObject implements Serializable {
@PrimaryKey
@SerializedName("id")
@Expose
private String id;
@SerializedName("first_name")
@Expose
private String first_name;
@SerializedName("last_name")
@Expose
private String last_name;
@SerializedName("email")
@Expose
private String email;
@SerializedName("number")
@Expose
private String number;
@SerializedName("password")
@Expose
private String password;
@SerializedName("adress")
@Expose
private String adress;
@SerializedName("created_on")
@Expose
private String createdOn;
@SerializedName("reg_id")
@Expose
private String regId;
@SerializedName("status")
@Expose
private String status;
private long mPaySaldo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstname;
}
public void setFirstName(String firstname) {
this.firstname = firstname;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
this.number = number;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAdress() {
return alamat;
}
public void setAdress(String alamat) {
this.alamat = alamat;
}
public String getCreatedOn() {
return createdOn;
}
public void setCreatedOn(String createdOn) {
this.createdOn = createdOn;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public long getmPaySaldo() {
return mPaySaldo;
}
public void setmPaySaldo(long mPaySaldo) {
this.mPaySaldo = mPaySaldo;
}
}
loginUser = realm.copyFromRealm(MangJekApplication.getInstance(this).getLoginUser());
这就是错误代码所在的位置
if (response.isSuccessful()) {
if (response.body().getMessage().equals("found")) {
User user = response.body().getData().get(0);
Log.v("Data User ","- "+user.toString());
saveUser(user);
Intent intent = new Intent(SignInActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(SignInActivity.this, "Username or wrong Password", Toast.LENGTH_SHORT).show();
}
private void saveUser(User user) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(User.class);
realm.copyToRealm(user);
realm.commitTransaction();
MainApplication.getInstance(SignInActivity.this).setLoginUser(user);
}
public class User extends RealmObject implements Serializable {
@PrimaryKey
@SerializedName("id")
@Expose
private String id;
@SerializedName("first_name")
@Expose
private String first_name;
@SerializedName("last_name")
@Expose
private String last_name;
@SerializedName("email")
@Expose
private String email;
@SerializedName("number")
@Expose
private String number;
@SerializedName("password")
@Expose
private String password;
@SerializedName("adress")
@Expose
private String adress;
@SerializedName("created_on")
@Expose
private String createdOn;
@SerializedName("reg_id")
@Expose
private String regId;
@SerializedName("status")
@Expose
private String status;
private long mPaySaldo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstname;
}
public void setFirstName(String firstname) {
this.firstname = firstname;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
this.number = number;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAdress() {
return alamat;
}
public void setAdress(String alamat) {
this.alamat = alamat;
}
public String getCreatedOn() {
return createdOn;
}
public void setCreatedOn(String createdOn) {
this.createdOn = createdOn;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public long getmPaySaldo() {
return mPaySaldo;
}
public void setmPaySaldo(long mPaySaldo) {
this.mPaySaldo = mPaySaldo;
}
}
loginUser = realm.copyFromRealm(MangJekApplication.getInstance(this).getLoginUser());
并且该错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.alexa.customer, PID: 25602
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alexa.customer/com.alexa.customer.mFood.BookingActivity}: java.lang.IllegalArgumentException: Only valid managed objects can be copied from Realm.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2375)
at android.app.ActivityThread.access$900(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:708)
Caused by: java.lang.IllegalArgumentException: Only valid managed objects can be copied from Realm.
at io.realm.Realm.checkValidObjectForDetach(Realm.java:1745)
at io.realm.Realm.copyFromRealm(Realm.java:1418)
at io.realm.Realm.copyFromRealm(Realm.java:1391)
at com.alexa.customer.mFood.BookingActivity.onCreate(BookingActivity.java:115)
at android.app.Activity.performCreate(Activity.java:5982)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2375)
at android.app.ActivityThread.access$900(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:708)
有人能帮我吗?