Fragment和Activity之间通过接口的方式实现通信,主要是分别在onAttachFragment和onAttach方法中进行接口绑定
1.Activity向Fragment发出通信
Activity端:
private OnMainListener mainListener;
// 绑定接口
@Override
public void onAttachFragment(Fragment fragment) {
try {
mainListener = (OnMainListener)fragment;
} catch (Exception e) {
throw new ClassCastException(this.toString() + " must implement OnMainListener");
}
super.onAttachFragment(fragment);
}
// 接口
public interface OnMainListener {
public void onMainAction();
}
onMainAction方法是Activity向Fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。
Fragment端:
public class MyFragment extends Fragment implements OnMainListener {
……………………
@Override
public void onMainAction() {
//这里是实现通信的接口
}
2.Fragment向Activity发出通信
Fragment端:
private OnFragmentListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentListener) activity;
} catch (ClassCastException e) {
throw newClassCastException(activity.toString() + " must implement OnFragmentListener");
}
}
public interface OnFragmentListener {
public void onFragmentAction(intflag);
}
//把传递进来的activity对象释放掉
@Override
public void onDetach() {
super.onDetach();
mListterner = null;
}
Activity端:
public class MainActivity extends Activity implements OnFragmentListener{
………………
// 实现接口方法
@Override
public void onFragmentAction(int flag) {
//实现通信的接口
}