![](/img/trans.png)
[英]Android: Error at passing a Parcelable object to another Activity
[英]Android Parcelable and object passing by reference
我有很多對象,其中一些對象具有不同的ArrayList屬性(自定義對象)。 任何上述ArrrayList中都可能出現相同的對象。
我希望通過引用傳遞這些對象,以便在編輯其中一個對象時,更改將反映在所有ArrayLists /對象中。
我需要將這些對象或ArrayLists作為Parcelable傳遞到不同的Activity。 我認為Parcelable接口導致通過引用傳遞不起作用(考慮到你需要實現新的構造函數,哪種有意義,所以據說每次創建和傳遞Parcel時都會創建/克隆新對象?)。
我想知道處理這種情況的最佳方法是什么,即。 如何實現或模擬通過引用傳遞的對象的行為。 如果可以避免的話,我真的不想使用任何持久性存儲技術。
我知道這是一個老問題,但是因為我在這里:)
無論如何我做的是傳遞我想要的項目的ID,然后使用應用程序來保存我的數據。
例如,假設我有一個名為Order的類,每個訂單都有很多這樣的Line
class Order {
UUID _id;
List<Line> _lines = new ArrayList<>();
}
class Line {
UUID _id;
Product _product ;
BigDecimal _price;
int _quantity;
}
等等
所以我有一個Application的實現,我存儲了所有我的(內存)命令,如下所示:
public class App extends Application {
public static final List<Order> Orders = new Order();
public static final Order GetOrder(UUID id) {
for (Order o : Orders) {
If(o.get_id().Equals(id))
return o;
}
return null;
}
}
然后,如果我希望通過特定的訂單,我會做這樣的事情:
Intent i = new Intent(this, OrderEdit.class);
i.putExtra(OrderEdit.ID, my_order.get_id().ToString());
startActivity(i);
在另一邊:
UUID id = UUID.fromString(getArguments().getExtra(ID));
App.GetOrder(id);
這樣你總是有一個參考傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.