(转载)http://haiyang08101.iteye.com/blog/2155537
在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法。
- private OnMainListener mainListener;
- // 绑定接口
- @Override
- public void onAttachFragment(Fragmentfragment) {
- try {
- mainListener = (OnMainListener)fragment;
- } catch (Exception e) {
- throw new ClassCastException(this.toString() + " must implementOnMainListener");
- }
- super.onAttachFragment(fragment);
- }
- // 接口
- public interface OnMainListener {
- public void onMainAction();
- }
onMainAction方法是activity向fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。
- public class MyFragment extends Fragment implementsOnMainListener {
- ……………………
- @Override
- public voidonMainAction() {
- //这里是实现通信的接口
- }
----------------------------------------------------------------------------
2. fragment向activity 发出通信:(和前面差不多,把它调过来用就可以)
- 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);
- }
- public class MainActivity extends Activity implements OnFragmentListener{
- ………………
- // 实现接口方法
- @Override
- public void onFragmentAction(int flag) {
- //实现通信的接口
- }
两者都是通过接口的实现来进行通信的,重要的地方就是分别在onAttachFragment和 onAttach方法中进行接口绑定。
通信还有其他方法的,比如广播、静态handler等,这里就不赘述了。
end~