参数传递给片段的常用模式是定义一个newInstance
帮助程序方法,该方法调用片段的默认构造函数,然后调用setArguments
,传递Bundle
。我了解通过FragmentManager
动态添加片段时这是如何工作的,因为在这种情况下,我通过调用 newInstance
来显式实例化片段。
当活动的 XML 资源具有片段的容器并且未指定稍后将在其中添加哪个片段时,这有效。但是,如果我希望活动的 XML 资源想要使用 <fragment>
元素引用片段的 XML 资源,该怎么办?在这种情况下,Android 为我调用片段的默认构造函数,我从不使用FragmentManager
。在这种情况下,我什么时候提供论据,或者不可能?
通过从 xml 布局调用<fragment>
,将触发默认构造函数,这意味着不会处理您的参数。
在这种情况下,有很多方法可以将数据传递到片段:
- 使用
findFragmentById
找到声明的片段,然后传递数据像任何其他类一样使用二传手。 - 声明您的 xml 没有类的片段,然后使用 片段管理器。
- 使用自定义属性在 xml 上传递数据 (对原始数据有效)
希望能回答您的问题
由于它以 xml 显示,因此它已经被构造好了。您需要向片段类添加一个帮助程序方法以设置所需的值。您可以通过调用来获取对片段的引用
MyFragment mFrag = (MyFragment)getFragmentManager().findFragmentById(R.id.fragmentID);
mFrag.helperMethod(23, "foobar");