参考:Fragment间传值三种方式
1、在【接收方】的fragment中设置setData方法
public void setData(String string) { bt_main.setText(string); }2、在【发送方】获取【接收方】的fragment,并调用setData方法
// 方法一:在MainFragment中设置一个setData()方法,在方法中设置更改按钮名称 MainFragment mainFragment = (MainFragment)getActivity().getSupportFragmentManager().findFragmentByTag("mainFragment"); mainFragment.setData(mDatas.get(position));1、【发送方】的fragment中设置接口
private OnDataTransmissionListener mListener; //接口回调的方法 public interface OnDataTransmissionListener { void dataTransmission(String data); } public void setOnDataTransmissionListener(OnDataTransmissionListener mListener) { this.mListener = mListener; }2、【发送方】的fragment中接口设置数据
//方法二:采取接口回调的方式进行数据传递 if (mListener != null) { mListener.dataTransmission(mDatas.get(position)); }3、在activity中实现接口,并将数据传给【接收方】的fragment
MenuFragment menuFragment = new MenuFragment(); final MainFragment mainFragment = new MainFragment(); menuFragment.setOnDataTransmissionListener(new MenuFragment.OnDataTransmissionListener() { @Override public void dataTransmission(String data) { mainFragment.setData(data); } });1、添加eventbus依赖:
compile 'org.greenrobot:eventbus:3.0.0'2、【发送方】的fragment传递数据
//方法三:使用第三方开源框架EventBus EventBus.getDefault().post(mDatas.get(position));//传递数据3、【接收方】的fragment接收数据
@Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View mainView = View.inflate(getActivity(), R.layout.main_fragemnt, null); bt_main = (Button) mainView.findViewById(R.id.bt_main); EventBus.getDefault().register(this);//注册 return mainView; } @Subscribe public void onEvent(String data) {//接受数据 bt_main.setText(data); } @Override public void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);//取消注册 }MainActivityIII 布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/fl_menu" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#20ff0000" /> <FrameLayout android:id="@+id/fl_main" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" android:background="#2500ff00" /> </LinearLayout>MenuFragment布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lv_menu" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>listview的item布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv_menu_item" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="item" android:textColor="@color/colorAccent" android:textSize="25sp" /> </LinearLayout>MainFragment布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/bt_main" android:layout_width="200dp" android:layout_height="200dp" android:layout_centerInParent="true" android:background="#ff0" android:text="根据条目改变内容" /> </RelativeLayout>