2015-07-05 125 views
0

我發現它能夠支持使用片段的多個屏幕令人困惑。我認爲這個想法是我可以提供多個版本的活動,並且活動可以有一個或多個靜態嵌入的片段(取決於房地產)。支持動態或靜態碎片的不同屏幕尺寸?

支持從代碼添加這些動態片段而不是嵌入<fragment>元素類型。這將如何在代碼中完成,因爲我不知道活動中xml的配置細節。

有沒有人有這樣的例子?

什麼時候會使用靜態或動態片段。

我可以預見使用動態片段的一個原因是爲了支持片段上的保留,所以活動可以在代碼中請求它,但是我發現很難理解如果沒有活動(java)知道如何支持它正是XML文件可

感謝

回答

0

我發現它非常有用翻閱和理解Android Samples的代碼。

這些示例項目通常很小,並且只關注1或2個主要概念。

如果您不想實際下載和安裝示例項目,您也可以瀏覽GitHub上的源代碼。

例如在NavigationDrawer sample中,NavigationDrawerActivity類包含一個動態創建的PlanetFragment類。

0

有使用「動態」片段2個主要原因:

  1. 您可以通過代碼傳遞參數。例如,如果您有顯示文章的片段,則可以通過代碼創建片段,並使用要顯示的文章進行初始化(使用Fragment.setArguments(Bundle))。這相當於使用Intent.putExtras()將參數傳遞給活動。
  2. 您可以在同一個容器中交換不同的片段。

示例1:在您的主要活動中,您有一個包含3個部分的導航菜單。當用戶選擇一個新的部分時,用同一個FrameLayout容器中的片段「部分B」替換片段「部分A」。

示例2:在平板電腦上顯示雙窗格佈局(項目列表+詳細信息)。用戶每次選擇左列表中的項目時,都會創建一個新的片段,以便爲新項目顯示並使用新片段替換右側的現有片段。

示例3:您有一個ViewPager,其中顯示一長串文章。您向右或向左滑動導航到上一篇/下一篇文章。這些片段將在FragmentPagerAdapter中以編程方式創建;你不能使用靜態碎片來做到這一點。

0

要回答你關於如何實現動態片段的雙窗格的問題,這裏是如何:

  1. 創建您的資源文件夾命名值土地。在此文件夾中添加你將有一個這樣的代碼config.xml文件:

    <resources> <item type="bool" name="dual_pane">true</item> </resources>

  2. 在「正常」值的文件夾,在config.xml文件中,添加以下代碼:

    <resources> <item type="bool" name="dual_pane">false</item> </resources>

  3. 在你的活動,你可以在OnCreate檢測(),對應於景觀配置布爾值剛剛創建:

    getResources()getBoolea。 N(R.bool.dual_pane);

  4. 然後,根據布爾值,您可以決定只使用兩個片段容器(另一個窗格佈局)或兩個片段容器彼此相鄰(雙窗格佈局)來對佈局進行膨脹。

  5. 最後將你的片段動態地添加到適當的容器,並瞧。

我喜歡這種方式,因爲它很像Android,通過使用不同的值文件夾。此外,您不必對現有的工作片段模式進行太多改動,以使其支持雙窗格模式。