[英]Updating a parcelable Object that was delivered from previous Activity
我有一個對象Book
,其中包含一個字段urlString
。 我通過Intent.putExtra()
將我的Book
從活動A轉移到活動B ,然后以相同的方式從活動B轉移到活動C。 在活動C內 ,我想更新Book.urlString
,其方式也將更新活動A的原始引用。 意思是,下次我從活動A處理同一 Book
-它將在urlString
字段中具有一個值。
什么是正確的方法( 不使Book保持靜態 )?
當您通過意圖傳遞對象時,它會對其進行序列化,並且每次檢索時都會創建一個新對象。 因此,在活動C中,您具有與活動A和B不同的對象,基本上,如果您更改urlString,它將不會反映在活動A或B中。
有很多方法可以解決此問題,我更喜歡使用充當數據提供者的Singleton方法
public class DataProvider {
private static DataProvider ourInstance = new DataProvider();
public static DataProvider getInstance() {
return ourInstance;
}
private DataProvider() {
}
private List<Book> books;
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
public Book getBookById(long id) {
// WRITE YOUR LOGIC HERE TO RETRIEVE OBJECT
return book;
}
要訪問您的書本對象,請使用以下代碼(希望您可以區分書本對象,即我假設書本ID)
DataProvider.getInstance().getBookById(YOUR_ID);
使用這種方法,因為您在所有活動中都引用同一對象,那么您所做的任何更新都會反映在其他活動中。
您只需要將Book
類設置為static
。
要么
您將其保存在SharedPreferences
並從每個Activity
的SharedPreferences
中讀取
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.