我试图通过意图将数据从活动发送到其他人。发送字符串或整数工作完好。但是,当我加入目的相同Parecelable对象时,它总是返回空为弦乐,整数和对象。以下是我将数据设置为意图的代码。传递对象在活动意图中返回null
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("SomeText", "sometext");
intent.putExtra("itemId", itemId);
intent.putExtra("someuser",user);
startActivity(intent);
而在其他活动我得到值:
String som = getIntent().getStringExtra("SomeText");
int itemird = getIntent().getIntExtra("itemId", 0);
User user = getIntent().getParcelableExtra("someuser");
这里任何人都可以给我建议我的错误是什么或者更好的解决方案?
所以这是我Parcelable类
public class User implements Parcelable{
private int mData;
private String username;
private String imagePath;
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
public String getImagePath() {
return imagePath;
}
public User() {
}
public User(String username, String userId) {
this.username = username;
this.userId = userId;
}
public User(String username) {
this.username = username;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {
public User createFromParcel(Parcel in) {
return new User(in);
}
public User[] newArray(int size) {
return new User[size];
}
};
private User(Parcel in) {
mData = in.readInt();
}
}
您可以使自定义Java对象实现Serializable并使用putExtra。如果不起作用,请粘贴错误日志。 –
这可能是您的User类中的parcelable接口方法的实现问题。你可以在这里发布这些方法吗? – aravindsagar
你必须坚持'writeToParcel'中的所有属性,并在构造函数'User(Parcel in)'中读取所有属性'看看这个链接,以获得更好的我的意思http://stackoverflow.com/questions/21250339/how-to-pass- arraylistcustomeobject-one-activity-to-another/21250450#21250450 –