2014-03-05 47 views
0

我有兩個片段 - 列表和詳細信息。起初,我用詳細片段列表片段

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.replace(R.id.content_frame, listingFrag); 
ft.commit(); 

在上市片段攻項加載在活動的容器上市片段我加載使用

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.add(R.id.content_frame, detailFrag); 
ft.addToBackStack(null); 
ft.commit(); 

在裝載細節片段我不明白的細節片段列表片段的onPause調用。從細節片段(使用系統後退按鈕)返回時,我也無法獲取列表片段的onResume調用。另外,當我處於細節片段中時,將應用程序置於後臺可調用列表和細節片段的onPause。在從後臺取回應用程序時,會調用列表和詳細信息屏幕的onResume。

上述行爲是非常意外的。 我想
1)上市片段的的onResume被稱爲從列表顯示畫面
2)上市片段的的onPause回來上裝載的細節片段
3)只有細節片段的的onPause被稱爲被稱爲當應用程序被放到背景
4)只有細節片段的onResume被調用時,應用程序從後臺帶回

有人可以請解釋一種方法來做到這一點。

在此先感謝!

回答

0

onResume in fragment僅僅是和onResumeActivity的反映。

因此,每次你從一個活動到另一個活動時,第一個活動的所有片段將調用,第二個活動的所有片段將調用onResume

此功能不適用於片段可見/添加或刪除。

+0

感謝您的回覆!你知道一些其他的方式來實現我想要做的嗎? – DevAndroid

0

當您顯示詳細片段時,將其添加,這意味着列表和詳細片段同時處於活動狀態。因此他們都收到onPause()onResume()

您應該嘗試用細節片段替換列表片段。這將導致列表片段中的onPause(),並且一次只有一個片段處於活動狀態。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.replace(R.id.content_frame, listingFrag); 
ft.addToBackStack(null); 
ft.commit(); 

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.replace(R.id.content_frame, detailFrag); 
ft.addToBackStack(null); 
ft.commit(); 
+0

我也考慮過這個選項。但是這不會幫助我,因爲我在onCreateView中下載了列表屏幕的內容。因此,如果清單片段在從細節返回時被替換,則會重新下載所有內容。 – DevAndroid