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

时间:2016-03-20 17:59:48

标签: android arguments fragment

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

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

2 个答案:

答案 0 :(得分:2)

当它以xml显示时,它已经被构造。您需要向片段类添加辅助方法以设置所需的值。您可以通过调用

来获取对片段的引用
MyFragment mFrag = (MyFragment)getFragmentManager().findFragmentById(R.id.fragmentID);
mFrag.helperMethod(23, "foobar");

答案 1 :(得分:1)

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

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

  1. 使用findFragmentById查找声明的片段然后传递 使用像任何其他类一样的setter的数据。
  2. 声明你的xml     没有类的片段,然后使用编程方式对其进行充气     FragmentManager。
  3. 使用自定义属性在xml上传递数据     (对原始数据有效)
  4. 希望能回答你的问题