Activity与Frgment之间的通信

Activity到Fragment的通信

  • 通过setArgumentsgetArguments
  • 通过Fragment.instantiate将数据传递过去,还是通过getArguments获取
  • 通过getSupportFragmentManager().findFragmentByIdgetSupportFragmentManager().findFragmentByTag获取到对应的Fragment的实例对象,通过条用这个Fragment的方法传递参数等;
final MyFragment myFragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.top);

Fragment到Activity、Fragment到Fragment的通信

1、通过接口方式(官方推荐)

一般的思路是这样的:

  • 在Fragment里定义这个接口
  • Activity继承这个接口,并实现它
  • Fragment获取这个接口实现

实 例:

// 1、定义接口
public interface IFragmentListener {
     public void onFragmentInteraction(String id);
}

// 2、继承这个接口
public class MainActivity extends Activity implements IFragmentListener {
    @Override
    public void onFragmentInteraction(String id) {
        // 更新activity自己的数据
        // 或者跟其他fragment交互
    }
}

// 3、在Fragment里的onAttach去获取这个实例
@Override
public void onAttach(Activity activity) {
     super.onAttach(activity);
     try {
          mListener = (OnFragmentInteractionListener) activity;
     } catch (ClassCastException e) {
          throw new ClassCastException(activity.toString()
                    + " must implement OnFragmentInteractionListener");
     }
}

2、广播

3、EventBus

4、Otto

results matching ""

    No results matching ""