2015-09-07 72 views
0

我在AppCompatActivity中添加片段。我想知道任何片段何時會聚焦或失去焦點。例如,當添加新片段時,我想要一些代碼告訴前一個片段,即他失去了焦點。當片段失去焦點並重新獲得AppCompatActivity的關注

我已經試過setUserVisibleHint()onHiddenChanged()方法,但兩者都不起作用。

有人可以告訴我如何做到這一點。

+0

的原始來源是在技術上可以一次集中多個片段?嘗試記錄每個片段onResume和onPause。我假設你的片段是關注這兩個生命週期事件的。 –

+0

@DanielBo只有在調用Activities onResume()或onPause()時纔會調用片段onResume()或onPause()。看到這裏:http://stackoverflow.com/questions/11326155/fragment-onresume-onpause-is-not-called-on-backstack#16252923 –

+1

看到我的答案它是爲我工作。 –

回答

0

感謝@oriharel提供了一個很好的解決方案來處理這種情況。這裏是代碼:

在你的活動(MyActivity),加入這個監聽器:

getSupportFragmentManager().addOnBackStackChangedListener(getListener()); 

(正如你可以看到我使用的是兼容包)。

getListener實現:一個 「」 被按下後

MyFragment.onFragmentResume()將被調用。雖然一些注意事項:

  1. 它假定您添加的所有事務返回堆棧(使用FragmentTransaction.addToBackStack())

  2. 它會在每個堆棧變化被激活(您可以存儲其他的東西在後面如動畫),所以你可能會得到同一個片段實例的多個調用。

答案here