我試圖通過意圖將數據從活動發送到其他人。發送字符串或整數工作完好。但是,當我加入目的相同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 –