通过XML添加片段与通过编程添加片段的优势是什么



从Android文档中,我不太清楚通过XML添加片段与通过编程添加片段相比有哪些优势和实际用例。

这两种方法都允许使用Bundle将数据从活动发送到片段并返回吗?
两种方法在活动生命周期中的行为是否相似?

一些简短的例子或参考资料肯定会有所帮助。

这两种方法只有细微的区别。如果您在XML中添加片段,那么您首先加载或创建它,然后您将获得它的实例,反之亦然。

此外,通过编程添加片段可以动态更改其属性,而如果从XML添加片段,则可以获得固定值。

没有太大区别。

使用FragmentContainerView并使用android:name或android:class,可以避免只有在savedInstanceState为null或尚未添加时才实例化片段的锅炉板代码。

如果您以编程方式执行此操作,则需要确保只有在片段尚未添加到活动中时才添加片段,方法是检查:

if (getSupportFragmentManager().findFragmentByTag(CUSTOM_TAG) != null)
{
// You can also easily add animations or pass custom data.
getSupportFragmentManager().beginTransaction().add(R.id.container_view, YourFragment.newInstance(data), CUSTOM_TAG).commit();
}

通过编程的方式,您可以传递自定义数据,并在实际需要时添加。在布局方法的情况下,当活动的布局膨胀时,它将被实例化。但很多时候,我们不需要立即添加片段,在这种情况下,以编程方式添加它将是一个更好的选择。

没有任何区别。Android有一个从XML实例化对象的系统,但它总是可以与实际执行的构造函数和添加子对象的方法进行交换。不同之处在于方便:XML系统允许您轻松地链接其他资源,并且它具有帮助传递正确参数的功能。

最新更新