将参数传递给<fragment>由 XML 资源中的元素引用的片段



参数传递给片段的常用模式是定义一个newInstance帮助程序方法,该方法调用片段的默认构造函数,然后调用setArguments,传递Bundle。我了解通过FragmentManager动态添加片段时这是如何工作的,因为在这种情况下,我通过调用 newInstance 来显式实例化片段。

当活动的 XML 资源具有片段的容器并且未指定稍后将在其中添加哪个片段时,这有效。但是,如果我希望活动的 XML 资源想要使用 <fragment> 元素引用片段的 XML 资源,该怎么办?在这种情况下,Android 为我调用片段的默认构造函数,我从不使用FragmentManager。在这种情况下,我什么时候提供论据,或者不可能?

通过从 xml 布局调用<fragment>,将触发默认构造函数,这意味着不会处理您的参数。

在这种情况下,有很多方法可以将数据传递到片段:

  1. 使用 findFragmentById 找到声明的片段,然后传递数据像任何其他类一样使用二传手。
  2. 声明您的 xml 没有类的片段,然后使用 片段管理器。
  3. 使用自定义属性在 xml 上传递数据 (对原始数据有效)

希望能回答您的问题

由于它以 xml 显示,因此它已经被构造好了。您需要向片段类添加一个帮助程序方法以设置所需的值。您可以通过调用来获取对片段的引用

MyFragment mFrag = (MyFragment)getFragmentManager().findFragmentById(R.id.fragmentID);
mFrag.helperMethod(23, "foobar");

最新更新