Activity与Frgment之间的通信
Activity到Fragment的通信
- 通过
setArguments
和getArguments
; - 通过
Fragment.instantiate
将数据传递过去,还是通过getArguments获取 - 通过
getSupportFragmentManager().findFragmentById
或getSupportFragmentManager().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");
}
}