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