簡體   English   中英

Android:將活動中包含3個片段的數據傳遞到上一個活動

[英]Android: pass data from activity with 3 fragments to previous activity

我正在使用Android Studio構建一個Android應用程序。 假設我有Activity1和Activity2。 活動2有3個片段(3個標簽)。 我設法通過使用片段適配器將數據從Activity1傳遞到Activity2,然后從Activity2傳遞給它的片段。

1)我想做相反的事情:從所有3個片段中收集數據,並將其傳遞給他們坐在(Activity2)的活動,然后將數據從Activity2傳遞回Activity1。

我實現了一個將數據從一個片段傳遞到Activity2的接口,但是如何(以及何時)將所有3個片段的數據傳遞給Activity2? 我編寫的方法將一個對象從片段發送到Activity2。 但是Activity2中的方法僅獲得一個對象……或者也許有一種方法可以將數據從片段發送到Activity2片段適配器? (這可能是我認為最好的...)

2)將數據從Activity2傳遞回Activity1的最佳方法是重寫“ onBackPressed”並使用startActivityForResult和setResult嗎? (除了ActionBar的“后退按鈕”之外,我沒有其他按鈕可以執行此操作)。

謝謝!

1)您可以使用以下3種方法創建接口: setResult1()setResult2()setResult3()並讓您的Activity實現此接口,以便它可以在3個片段可用時立即收集它們的結果。 片段應在結果更改后以及恢復后(在重新創建“活動”(如更改方向)時)在此接口中調用其自己的方法。

2)為了使Activity2將結果發送回Activity1 ,最好的方法是使用startActivityForResult()Activity1啟動Activity2 然后,每次Activity2收集新結果時,都應調用setResult(int resultCode, Intent Data) 您可以多次調用它來替換以前的結果。 如果立即設置結果,則無需覆蓋onBackPressed()

我的建議是創建一個用於存儲和傳遞數據的新類,並且任何活動或片段都可以訪問該類。該類必須是單例,因此相同的數據可以由不同的活動和片段共享。

public static DataCache instance;
private UserInfo user;    //here's the data you want to save

private DataCache(Context c){
    this.user=new UserInfo();
}

public static DataCache getInstance(Context c){
    if(null==instance){
        instance=new DataCache(c);
    }
    return instance;
}

public void setData(UserInfo data){
    this.user=user;
}

public UserInfo getData(){

    return user;
}

您可以使用它來保存或獲取來自任何活動或片段的數據:DataCache.getInstance(context).getData()/ saveData(data)

在這種情況下,數據存儲在內存中,您可以重寫set和get函數以將數據保存到所需的任何位置,例如SDCARD或數據庫。

您可以將所有3個片段中的數據存儲到共享的首選項中,並在活動1中獲取該數據。檢索后,應從共享的首選項中清除數據。

暫無
暫無

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

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