这个错误让我发疯
这是传递参数的代码:
Intent intent = new Intent(this, TheClass.class);
Bundle bundle = new Bundle();
bundle.putInt("int_value",1);
bundle.putParcelableArrayList("USER_ARR",arr);
intent.putExtras(bundle);
startActivity(intent);
arr 是 ArrayList 并且 User 是 parcellable
另一边是:
Bundle bundle = this.getIntent().getExtras();
ArrayList<User> users = bundle.getParcelableArrayList("USER_ARR");
int int_value = bundle.getInt("int_value");
我也尝试关注这个链接:Problems passing integer and serializable on bundle and do it without bundles, but still can't get it to work the integer is not pass, unless it is passed without the paracellable array list
编辑:
用户类如下所示:
public class User implements Comparable<User>, Parcelable{
private int user_id;
private String name;
private String status;
private String phone;
private byte[] picture;
private Timestamp last_login;
private boolean is_verified;
public User(int user_id) {
this.setUserId(user_id);
}
public int getUserId() {
return user_id;
}
public void setUserId(int user_id) {
this.user_id = user_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public byte[] getPicture() {
return picture;
}
public void setPicture(byte[] picture) {
this.picture = picture;
}
public Timestamp getLastLogin() {
return last_login;
}
public void setLastLogin(Timestamp last_login) {
this.last_login = last_login;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + user_id;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (user_id != other.user_id)
return false;
return true;
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<User> CREATOR =
new Parcelable.Creator<User>(){
@Override
public User createFromParcel(Parcel source) {
return new User(source);
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
public User(Parcel source){
readFromParcel(source);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(user_id);
dest.writeString(name);
dest.writeString(status);
dest.writeString(phone);
if (picture != null)
dest.writeByteArray(picture);
if (last_login == null)
dest.writeString(null);
else
dest.writeString(last_login.toString());
}
public void readFromParcel(Parcel source){
user_id = source.readInt();
name = source.readString();
status = source.readString();
phone = source.readString();
if (picture != null)
source.readByteArray(picture);
String login = source.readString();
if (login != null)
last_login = Timestamp.valueOf(login);
else
last_login = null;
}
public boolean contains(CharSequence str, Locale locale) {
str = ((String)str).toLowerCase(locale);
String name = this.getName();
if (name != null)
name = name.toLowerCase(locale);
String phone = this.getPhone();
if (phone != null)
phone = phone.toLowerCase(locale);
if (name != null && name.contains(str)) {
return true;
}
if (phone != null && phone.contains(str)) {
return true;
}
return false;
}
@Override
public int compareTo(User another) {
String name1 = this.getName();
String name2 = another.getName();
return name1.compareTo(name2);
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", name=" + name + ", status="
+ status + ", phone=" + phone + ", last_login=" + last_login
+ ", is_verified=" + is_verified + "]";
}
public boolean getIsVerified() {
return is_verified;
}
public void setIsVerified(boolean is_verified) {
this.is_verified = is_verified;
}
}