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

==


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM