1. 程式人生 > >兩個Fragment之間如何傳遞資料

兩個Fragment之間如何傳遞資料

FragmentA啟動FragmentB,做一些選擇操作後,返回FragmentA,需要把FragmentB裡面選擇的資料傳回來。有什麼辦法?

Fragment之間不能直接通訊,必須通過Activity來完成,具體步驟。

1. 在FragmentA中定義通訊介面,通過該介面向Activity傳送資料。

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傳遞資料。

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) {
        // ...
    }
}

==