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){
//...
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!