[英]Android. Passing this custom object to next Activity?
我有這個自定義對象,我想將其傳遞給不同的 Activity:
public class FindRouteOutputForDisplay {
public ArrayList<VertexDisplay> vertexDisplayArrayList;
public ArrayList<Integer> integerArrayList;
}
我試過這個,但不起作用。
Intent newIntent = new Intent(FirstActivity.this, SecondActivity.class);
FindRouteOutputForDisplay data = getMyData();
newIntent.putExtra("data", data); // Error
startActivity(newIntent);
我應該通過嗎
public ArrayList<VertexDisplay> vertexDisplayArrayList;
public ArrayList<Integer> integerArrayList;
一一分開? 有沒有辦法一次通過所有這些?
你可以試試這個解決方案。
public class FindRouteOutputForDisplay implements Serializable{
public ArrayList<VertexDisplay> vertexDisplayArrayList;
public ArrayList<Integer> integerArrayList;
}
Intent newIntent = new Intent(FirstActivity.this, SecondActivity.class);
FindRouteOutputForDisplay data = getMyData();
newIntent.putSerializable("data", data);
startActivity(newIntent);
如果您在“putSerializable”上有任何錯誤,那么您可以通過這種方式將您的對象轉換為 Serializable。
newIntent.putSerializable("data", (Serializable)data);
在您的活動中,只需通過此獲取您的數據
FindRouteOutputForDisplay data = getIntent().getSerializable("data");
希望能幫助到你。
將數據保存在應用程序上下文類中。 由於此類在您的應用程序實例中可用,因此您可以從所有活動中獲取或設置此類中定義的變量。 更多信息在這里
改變這一點:
startActivity(routeDetailIntent);
到 :
startActivity(newIntent);
您應該使自定義對象實現Parcelable接口:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
如果您需要其他解決方案,也可以查看此處。
你傳遞了錯誤的意圖來開始活動。
Intent newIntent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("value", data );
newIntent.putExtras(bundle);
startActivity(newIntent );
我有一個技巧給你。 將 Gson 添加到您的依賴項中。
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
}
將您的對象轉換為 Json 並將其作為字符串發送。
String data = new Gson().toJson(getMyData())
在新活動中將其從 String 轉換回來
FindRouteOutputForDisplay data = new Gson(stringData, FindRouteOutputForDisplay.class).
我也面臨這個問題,所以我正在嘗試下面的代碼:
有意圖地傳遞對象
在開始活動中,我們可以將 Parcelable 對象設置為意圖
User user = new User("1", "u", "u", "u");
ArrayList<User> userList = new ArrayList<User>();
Sensor sensor = new Sensor("1", "s", "s", true, user, userList);
intent.putExtra("com.score.senzors.pojos.Sensor", sensor);
在目標活動中,我們可以從 Intent extras(bundle) 中獲取 Parcelable 對象
Bundle bundle = getIntent().getExtras();
Sensor sensor = bundle.getParcelable("com.score.senzors.pojos.Sensor")
希望對你有幫助
您可以將類設為靜態並在您的應用程序中的任何位置使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.