Android 两个Fragment之间传递数据实例详解
Android两个Fragment之间如何传递数据
FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来。有什么办法?
Fragment之间不能直接通信,必须通过Activity来完成,具体步骤。
1.在FragmentA中定义通信接口,通过该接口向Activity发送数据。
publicclassFragmentAextendsFragment{ privateonButtonPressListenermListener; @Override publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){ Viewview=inflater.inflate(R.layout.fragment_linmo_select_beitie,container,false); listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){ mListener.onOKButtonPressed(selectedBeitie); } }); returnview; } @Override publicvoidonAttach(Activityactivity){ super.onAttach(activity); try{ mListener=(onButtonPressListener)activity; }catch(ClassCastExceptione){ thrownewClassCastException(activity.toString()+"mustimplementonOkButtonPressed"); } } publicinterfaceonButtonPressListener{ voidonOKButtonPressed(LinmoBeitieItemitem); } }
2.在Activity中实现该接口,并通过该接口向FragmentB传递数据。
publicclassMainActivityextendsActivityimplementsFragmentA.onButtonPressListener{ @Override publicvoidonOKButtonPressed(LinmoBeitieItemitem){ FragmentBfragmentB=(FragmentB)getFragmentManager().findFragmentById(R.id.container); fragmentB.onBeitieSelected(item); } }
3.FragmentB接收到数据并处理。
publicclassFragmentAextendsFragment{ publicvoidonBeitieSelected(LinmoBeitieItemitem){ //... } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!