2015-04-01 28 views
0

我試圖找到類似於FragmentManager.peek()方法的東西。找出當前顯示的片段是什麼是最好的方法?

用例是我需要發送屏幕焦點到當前加載的片段。但是,我發現自己不得不手動跟蹤當前正在顯示的片段,以便我可以告訴它重點關注。

具體情況是,我有一個菜單,其中有一些按鈕。當用戶點擊一個按鈕時,我需要將焦點從按鈕轉移到當前加載的Fragment中的特定視圖 - 但我無法知道Fragment當前加載的是什麼,它可能是與菜單項關聯的初始片段,或者它可能是一個不同的片段完全用戶到達已經更深入地挖掘原有的片段......所以我的邏輯必須是

pseudo... 
if(currentFragment == navButton.myFragmentType) 
    currentFragment.sendFocusToYourFirstRelevantElement() 
else 
    navButton.loadMyFragmentType() 

我的問題是,我不知道什麼是當前顯示的片段是,除非我手動跟蹤,但這真的很難看。

希望有更原生的解決方案。

回答

1

您必須手動跟蹤碎片。
想一想Fragments是如何工作的 - 它們被設計成可重複使用的,特別是一次可以在屏幕上顯示多個。正因爲如此,它不像查詢當前顯示的片段的FragmentManager那麼簡單,因爲它不知道哪個當前顯示您想要的片段。 知識需要的邏輯不是可以放在FragmentManager中的東西,因爲它對你的應用程序非常具體。

欲瞭解更多信息:What Fragments am I hosting and displaying?

+0

謝謝...這是非常令人失望的。但是......看起來你是對的。我認爲您可能需要考慮修改您的其他答案,以利用Fragment onResume()來避開後退按鈕......在執行過程中,如果聽到Back可能會導致意外的結果。但是,從backstack回來時,onResume()可靠地調用片段......這是我的(醜陋的)解決方案atm。 – 2015-04-01 19:06:44

+0

確實如此,onResume將始終被調用。謝謝! – athingunique 2015-04-01 19:16:37

相關問題