2014-03-04 254 views
0

我正在開發一個使用片段作爲導航流基礎的android應用程序。 在某種程度上,我陷入了一個我無法解決的問題。Android - 在對話框中顯示片段

所有片段都從基類中擴展而來,該基類具有導航管理器所需的一些屬性,稱爲NavigationFragment,它從Fragment擴展而來。

現在,我需要在對話框中顯示彈出式窗口之一。

我發現了令人驚訝的DialogFragment類,它可以做到這一點,但問題是片段無法從此擴展,因爲它已經從NavigationFragment擴展。

我不想讓NavigationFragment成爲一個DialogFragment,因爲只有少數人會顯示爲彈出窗口。

你知道這個的替代嗎?像一個可以包含片段的對話框或其他東西?

謝謝!

+0

也許你可以從DialogFragment擴展並實現一個導航控制器。無論如何,如果您重寫每個子類中的導航命令,這將是最好的選擇。 – dberm22

+0

不幸的是,我不是覆蓋子類中的命令。 NavigationFragment覆蓋片段中的onViewCreated,並有一個偵聽器實例與導航控制器進行通信。我正在考慮製作NavigationDialogFragment的選項,該選項擴展了DialogFragment並實現了這些功能。這不是我想要的,因爲我需要修改導航控制器。 – Diego

回答

0

你碰到過的並不是真正的問題。 您應該製作NavigationFragment擴展DialogFragment,然後只需撥打setShowsDialog(true)onCreate那些您想要顯示爲對話框的人。從helpDoc

setShowsDialog

控制是否該片段應在對話框中顯示。如果未設置,則不會在onActivityCreated(Bundle)中創建對話框,因此不會將片段的視圖層次添加到該對話框中。這允許您將 用作普通片段(嵌入在其 活動中)。

這通常是基於片段是否與傳遞給 FragmentTransaction.add(int,Fragment)的容器視圖ID相關聯而設置的。如果該片段與 一個容器一起添加,setShowsDialog將被初始化爲false;否則, 這將是事實。

Android fragment show as dialogfragment or usual fragment,或者更好的是,關於如何使用此功能的更詳細說明的官方文檔(http://developer.android.com/reference/android/app/DialogFragment.html#DialogOrEmbed)。