0
我在AppCompatActivity
中添加片段。我想知道任何片段何時會聚焦或失去焦點。例如,當添加新片段時,我想要一些代碼告訴前一個片段,即他失去了焦點。當片段失去焦點並重新獲得AppCompatActivity的關注
我已經試過setUserVisibleHint()
和onHiddenChanged()
方法,但兩者都不起作用。
有人可以告訴我如何做到這一點。
我在AppCompatActivity
中添加片段。我想知道任何片段何時會聚焦或失去焦點。例如,當添加新片段時,我想要一些代碼告訴前一個片段,即他失去了焦點。當片段失去焦點並重新獲得AppCompatActivity的關注
我已經試過setUserVisibleHint()
和onHiddenChanged()
方法,但兩者都不起作用。
有人可以告訴我如何做到這一點。
感謝@oriharel提供了一個很好的解決方案來處理這種情況。這裏是代碼:
在你的活動(MyActivity),加入這個監聽器:
getSupportFragmentManager().addOnBackStackChangedListener(getListener());
(正如你可以看到我使用的是兼容包)。
getListener實現:一個 「回」 被按下後
MyFragment.onFragmentResume()將被調用。雖然一些注意事項:
它假定您添加的所有事務返回堆棧(使用FragmentTransaction.addToBackStack())
它會在每個堆棧變化被激活(您可以存儲其他的東西在後面如動畫),所以你可能會得到同一個片段實例的多個調用。
答案here
的原始來源是在技術上可以一次集中多個片段?嘗試記錄每個片段onResume和onPause。我假設你的片段是關注這兩個生命週期事件的。 –
@DanielBo只有在調用Activities onResume()或onPause()時纔會調用片段onResume()或onPause()。看到這裏:http://stackoverflow.com/questions/11326155/fragment-onresume-onpause-is-not-called-on-backstack#16252923 –
看到我的答案它是爲我工作。 –