Android 创建fragment时向fragment中传数据

来源:互联网 发布:手写识别 算法 编辑:程序博客网 时间:2024/06/04 20:11

有两个fragment分别为FragementA和FragmentB,现在要从FragementA跳转到FragmentB。同时要向FragmentB中传入数据,首先要在FragmentB中创建静态的方法,如下:

public static FragmentB getInstance(ObjectA object) {FragmentB fragment = new FragmentB();Bundle bundle = new Bundle();bundle.putSerializable(Constants.BundleKey.Object, result);fragment.setArguments(bundle);return fragment;}

 


在FragementA中跳转的时候:

FragmentB fragment = FragmentB .getInstance(result);addFragmentToStack(fragment, true, true);

其中addFragmentToStack代码:

protected void addFragmentToStack(final Fragment fragment,final boolean isAddToBack, boolean hasAnimation) {FragmentTransaction ft = getFragmentManager().beginTransaction();try {if (hasAnimation) {ft.setCustomAnimations(R.anim.slide_right_in, R.anim.slide_left_out,R.anim.slide_left_in, R.anim.slide_right_out);}} catch (ArrayIndexOutOfBoundsException e) {throw new ArrayIndexOutOfBoundsException("动画数组下标越界");}ft.add(R.id.fragment_container, fragment);if (isAddToBack) {ft.addToBackStack(null);}ft.commit();}
这样就实现了fragment跳转的时候传递数据,在FragmentB中要把传递的数据取出,否则传数据就没有意义了,代码:

ObjectA object = (ObjectA) getArguments().getSerializable(Constants.BundleKey.Object);
其中ObjectA这个类要实现Serializable方法,否则也是不能传递的,切记切记!!

原创粉丝点击