gpt4 book ai didi

java - 在 Intent 中传递的同一个包上使用 putParcelableArrayList 和 putInt

转载 作者:行者123 更新时间:2023-11-29 08:59:44 33 4
gpt4 key购买 nike

这个错误让我抓狂

这是传递参数的代码:

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并且没有 bundle ,但仍然无法让它工作整数不会被传递,除非它在没有 paracellable 数组列表的情况下被传递

编辑:

用户类如下所示:

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;
}


}

最佳答案

查出是怎么回事,和我问的一个较新的问题有关,这个问题也没有任何答案

问题是:parcelable ArrayList passed partially with null elements

只有当字节数组的大小大于零时,我才在我的 parcelable 中读取一个字节数组,但不读取它并没有推进 dataPosition()

感谢这个问题Make custom Parcelable containing byte array我找到了答案

祝大家有个愉快的一天

关于java - 在 Intent 中传递的同一个包上使用 putParcelableArrayList 和 putInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254207/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com