簡體   English   中英

單擊另一個片段的Backpressed后返回時恢復片段狀態

[英]Restoring a Fragment State when returned after clicking Backpressed of another fragment

這是我的問題所在:

我有一個片段A。將其附加到其onCreateView中后,我將加載一個Web服務以從服務器獲取數據,然后使用基本適配器在列表視圖中設置該數據。 現在,在列表視圖的“項目單擊”上,我使用片段事務的替換方法和addtoBackstack(“ FragmentA”)將片段A替換為片段B。

FragmentManager fm =getActivity().getFragmentManager();
fm.beginTransaction().replace(R.id.content_frame, Fragment B).commit();

現在在這里,當我按片段B上的后退按鈕時,它將帶我到片段A,但Web服務再次開始加載。

我的問題:我只是希望當它返回到片段A時,它應該顯示其先前的狀態,並且不應再次調用Web服務。

謝謝

片段的OnCreateView每次需要繪制視圖時都會運行。 通過回退,您將導致重新創建視圖,因此Web服務將再次加載。

我相信,如果您只希望Web服務加載一次,則可以將代碼移至“ onCreate”方法,但是將代碼移至“ onResume”並包含一些檢查您是否在運行的邏輯可能是一個更好的主意。是否需要再次加載您的Web服務。

這樣,每次暫停片段然后再次加載時,您都可以確保片段仍然具有所需的一切。

片段生命周期
(來源: xamarin.com

編輯:

例如,您可能有

 @Override
 public void onResume() {
 super.onResume();  // Always call the superclass method first


 if (data == null) { //Or list is empty?
    getWebData()
 }
}

暫無
暫無

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

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