承接上篇
Fragment如何接收argument参数
Fragment如何获取Activity接收的intent值呢?
主要是通过
Bundle 来 putString() 参数, 在创建Fragment实例的时候将Bundle作为参数 setArgument(),这样在 getArgument()的时候,就可以用Bundle 的 getString()拿到所要传递的参数, 即由Activity传递进来的intent值.
以下代码摘自 Android Fragment 你应该知道的一切
- public static ContentFragment newInstance(String argument)
- {
- Bundle bundle = new Bundle();
- bundle.putString(ARGUMENT, argument);
- ContentFragment contentFragment = new ContentFragment();
- contentFragment.setArguments(bundle);
- return contentFragment;
- }
- private String mArgument;
- public static final String ARGUMENT = "argument";
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- // mArgument = getActivity().getIntent().getStringExtra(ARGUMENT);
- Bundle bundle = getArguments();
- if (bundle != null)
- mArgument = bundle.getString(ARGUMENT);
- }
不同宿主的Fragment数据传递与返回数据
使用Fragment的startActivityForResult,传递过去时因为Fragment存在
startActivityForResult和onActivityResult方法,通过Intent的putExtra即可实现数据传递.但是返回数据时, Fragment并不存在setResult方法, 所以依靠 getActivity().setResult()方法达到返回数据的效果(返回数据也是需要创建Intent对象putExtra的).以上就是整个过程, 但是有点需要注意的是,Fragment的onActivityResult是可以直接拿到Intent 对象的, 而接收方的Fragment到底能不能直接拿到发送方的Intent对象呢?
相同宿主的Fragment数据传递与返回数据
现在我们有两个相同宿主的Fragment, 需求是点击某一Fragment内部的点击事件,由这个Fragment传递数据到另一个Fragment.
在发送方创建目标Fragment时, 目标Fragment调用setTargetFragment(),用于记录当前fragment是由别的fragment启动,需要在完成操作后返回数据, 发送方还要创建onActivityResult方法来进行返回数据的接收.
目标Fragment返回数据时创建intent封装好需要传递数据手动调用getTargetFragment().onActivityResult(),发送方即可接收到返回的数据.