簡體   English   中英

更新從先前活動交付的可包裹物品

[英]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並從每個ActivitySharedPreferences中讀取

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM