android Activity与Fragment之间的通信

原创 2015年11月19日 15:20:20

一、使用onAttach方法实现

1、activity----->fragment

activity代码:
    private OnMainListener mainListener;
    // 绑定接口
    @Override
    public void onAttachFragment(Fragment fragment) {
        try {
            mainListener = (OnMainListener)fragment;
        } catch (Exception e) {
            throw newClassCastException(this.toString() + " must implementOnMainListener");
        }
        super.onAttachFragment(fragment);
    }
    // 接口
    public interface OnMainListener {
        public void onMainAction();
    }
onMainAction方法是activity向fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。
fragment代码:

public class MyFragment extends Fragment implementsOnMainListener {
        ……………………
        @Override
        public voidonMainAction() {
            //这里是实现通信的接口
        }

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代码:
  public class MainActivity extends Activity implements OnFragmentListener{
        ………………
        // 实现接口方法
        @Override
        public voidonFragmentAction(int flag) {
            //实现通信的接口
        }


    }

二、使用handler通信

接收方代码:

    public Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg != null) {
                switch (msg.what) {
                    case BaseConstant.SHOW_CHECK_IN:

                        right_text.setText(getString(R.string.calendar_checkin1));
                        break;
                    case BaseConstant.SHOW_CHECK_OUT:

                        right_text.setText(getString(R.string.calendar_checkout1));
                        break;
                    case BaseConstant.SHOW_CHECK_NOTHING:
                        right_text.setText("");

                        break;

                    default:
                        break;
                }
            }
        }

    };

发送方代码:

获得handler实例

        MarketDetailActivity activity = (MarketDetailActivity) getActivity();
        handler = activity.handler;

发送消息

        handler.sendEmptyMessage(flag);


三、使用BroadcastReceiver通信

这里就不贴代码了,可以参考BraodcastReceiver的相关使用使用。



版权声明:本文为博主原创文章,未经博主允许不得转载。

Fragment和Activity通信以及Fragment之间通信的两种方式

Fragment之间通信很简单……这里只是提供思路,无论是Fragment和Activity还是Fragment之间,通信的原理都是如此,所以Fragment之间通信不能直接通信,必须依靠所依附的Ac...
  • yalinfendou
  • yalinfendou
  • 2015年03月27日 15:11
  • 3808

android中fragment和activity之间相互通信

(转载)http://haiyang08101.iteye.com/blog/2155537 在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。...
  • u010746364
  • u010746364
  • 2016年01月15日 14:33
  • 1099

关于Fragment与Fragment、Activity通信的四种方式

一直想总结一下Fragment与Fragment、Activity通信的问题,今天有时间一共总结了三种,权当抛砖引玉,如果大家还有更好的方式来实现Fragment和Fragment、Activity的...
  • u012702547
  • u012702547
  • 2015年11月11日 22:48
  • 24133

android中fragment与activity之间通信原理以及例子

转自   http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1016/441.html 首先,如果你想在andro...
  • guozh
  • guozh
  • 2014年05月08日 17:45
  • 39992

Fragment与Activity的相互通信(一)

今天在做项目的时候,用到了平时再也熟悉不过的Fragment,其中涉及到了Activity与Fragment之间的通信,仔细探究发现没有那么容易,这里总结一下在自己项目中的应用。 参考博客: h...
  • tyk0910
  • tyk0910
  • 2015年12月25日 23:01
  • 6938

Android中Fragment和Activity之间的通信(含接口回调)

一、接口回调的简单引入: 我们先来看一个简单的接口回调的例子: 新建一个Java工程,然后新建一个包。然后新建一个A.java文件: A.java代码如下: 1 package co...
  • IT_51888_liang
  • IT_51888_liang
  • 2016年03月25日 00:22
  • 1150

详解Fragment跟Activity之间的通信

大家好.Fragment现在越来越广泛了,中文翻译为碎片,下面我就就碎片代替了,当时谷歌出碎片的原因是因为Android设备屏幕大小不统一,碎片出来了.用一套APP就可以解决平板跟手机上的UI问题.对...
  • u011310942
  • u011310942
  • 2014年07月21日 14:17
  • 3097

android中Activity与service之间相互通信的实现方式

使用intent代参,intent可以带基础数据类型,基础数据类型的数组,序列化对象,集合 使用广播 使用单例模式,在activity与service中少用 bindService获取引用,AIDL(...
  • Dr_abandon
  • Dr_abandon
  • 2016年11月10日 19:47
  • 513

两个简单Fragment之间的通信

两个简单Fragment之间的通信 建立两个Fragment,然后各添加1个按钮和1个TextView。 单击Fragment1的按钮修改Fragment2里的TextView文本。 相同的,单击Fr...
  • qq_26849491
  • qq_26849491
  • 2016年05月07日 15:30
  • 1914

Activity与Fragment,以及Fragment与Fragment之间的数据通讯

Activity与Fragment,以及Fragment与Fragment之间的数据通讯
  • yangyin3096
  • yangyin3096
  • 2016年05月22日 19:26
  • 838
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android Activity与Fragment之间的通信
举报原因:
原因补充:

(最多只允许输入30个字)