我发现能够使用片段支持多屏幕令人困惑。我认为这个想法是我可以提供多个版本的活动,并且该活动可能有一个或多个片段(取决于房地产)静态嵌入。
支持动态片段,这些片段是从代码而不是嵌入的<fragment>
元素类型添加的。如何在代码中完成此操作,因为我不知道活动中xml的配置细节。
有没有人有这方面的例子?
何时使用静态或动态片段。
我可以预见使用动态片段的一个原因是支持片段上的保留,因此活动可以在代码中请求它但我发现很难理解如果没有活动(java)确切知道这将如何支持什么xml文件可用
由于
答案 0 :(得分:0)
我发现查看并理解Android Samples的代码非常有用。
这些示例项目通常很小,每个项目只关注1个或2个主要概念。
如果您不想实际下载和安装示例项目,您还可以浏览GitHub上的源代码。
例如在NavigationDrawer sample中,NavigationDrawerActivity类包含一个动态创建的PlanetFragment类。
答案 1 :(得分:0)
使用&#34;动态&#34;有两个主要原因。片段:
Fragment.setArguments(Bundle)
)。这相当于使用Intent.putExtras()
将参数传递给Activity。示例1:您有一个包含3个部分的导航菜单。当用户选择新的部分时,您将替换Fragment&#34; A部分&#34;与片段&#34; B节&#34;在同一个FrameLayout容器中。
示例2:您在平板电脑上显示双窗格布局(项目列表+详细信息)。每次用户选择左侧列表中的项目时,您都会为新项目创建一个新的片段,以显示新项目并将右侧的现有片段替换为新片段。
示例3:您有一个ViewPager,它显示了很长的文章列表。您向右或向左滑动以导航到上一篇/下一篇文章。这些片段将以编程方式在FragmentPagerAdapter中创建;你不能使用静态碎片来做到这一点。
答案 2 :(得分:0)
要回答有关如何使用动态片段实现双窗格的问题,请按以下步骤操作:
在资源中创建名为values-land的文件夹。在此文件夹中,添加一个config.XML文件,您将在其中获得如下代码:
<resources>
<item type="bool" name="dual_pane">true</item>
</resources>
在&#34; normal&#34; values文件夹,在config.xml文件中,添加以下代码:
<resources>
<item type="bool" name="dual_pane">false</item>
</resources>
在您的活动中,您可以在onCreate()中检测与您刚刚创建的横向配置相对应的布尔值:
getResources()getBoolean(R.bool.dual_pane)。
然后,基于布尔值,您可以决定使用另一个(单个窗格布局)上的两个片段容器或两个彼此相邻的片段容器(双窗格布局)来扩充布局。
最后将您的片段动态添加到相应的容器中,然后瞧。
我喜欢这个approch,因为它非常像Android,通过使用不同的值文件夹。此外,您不必更改现有的工作片段模式,以使其支持双窗格模式。