FragmentA啓動FragmentB,作一些選擇操做後,返回FragmentA,須要把FragmentB裏面選擇的數據傳回來。有什麼辦法?ide
Fragment之間不能直接通訊,必須經過Activity來完成,具體步驟。spa
1. 在FragmentA中定義通訊接口,經過該接口向Activity發送數據。code
public class FragmentA extends Fragment { private onButtonPressListener mListener; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_linmo_select_beitie, container, false); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mListener.onOKButtonPressed(selectedBeitie); } }); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (onButtonPressListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement onOkButtonPressed"); } } public interface onButtonPressListener { void onOKButtonPressed(LinmoBeitieItem item); } }
2. 在Activity中實現該接口,並經過該接口向FragmentB傳遞數據。blog
public class MainActivity extends Activity implements FragmentA.onButtonPressListener { @Override public void onOKButtonPressed(LinmoBeitieItem item) { FragmentB fragmentB = (FragmentB)getFragmentManager().findFragmentById(R.id.container); fragmentB.onBeitieSelected(item); } }
3. FragmentB接收到數據並處理。接口
public class FragmentB extends Fragment { public void onBeitieSelected(LinmoBeitieItem item) { // ... } }
==get