https://blog.csdn.net/u012702547/article/details/49786417

https://blog.csdn.net/carson_ho/article/details/75453770

一、接口方式
在fragment类中定义一个接口并在Activity中实现它。Fragment在onAttach()回调函数中获取接口的具体实现的对象。后面,fragment就可以调用接口中的方法实现与Activity的通信。

在Android5.0之后废除了onAttach(Activity activity)的方法,转而使用onAttach(Context context),也就是传递的参数发生变化

public interface showMsgListener{ void showMsg(String str); } private showMsgListener msgListener; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { if(activity!=null){ msgListener=(MainActivity)activity; } } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement showMsgListener"); } } mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { msgListener.showMsg("Hello Android!(接口)"); } }); 

在Activity中需要实现该接口

 @Overridepublic void showMsg(String str) {Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); } 

二、广播

在Activity中注册广播接收器,在Fragment中发送广播

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ACTION_NAME)) { String msg = intent.getStringExtra("msg"); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } } }; public void registerBoradcastReceiver() { IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(ACTION_NAME); registerReceiver(mBroadcastReceiver, myIntentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mBroadcastReceiver); } 

三、Fragment 从Activity获取数据

在Fragment 的getInstance()方法中setArguments()设置参数

public static Fragment getInstance(String msg){ Bundle bundle = new Bundle(); bundle.putString("msg",msg); MainFragment fragment=new MainFragment(); fragment.setArguments(bundle); return fragment; } 

再通过getArguments()方法获取

 public void initDatas() { Bundle bundle=getArguments(); if(bundle!=null){ String msg=bundle.getString("msg"); Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show(); } }

转载于:https://www.cnblogs.com/zquan/p/9406734.html

Fragment与Activity之间的相互通信相关推荐

  1. Android(Fragment和Activity之间通信)

    Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...

  2. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    [正文] 一.接口回调的简单引入: 我们先来看一个简单的接口回调的例子: 新建一个Java工程,然后新建一个包.然后新建一个A.java文件: A.java代码如下: 1 package com.cn ...

  3. Android面试专题系列(四):Activity之间如何进行通信→LiveDataBus

    不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨-https://blog.csdn.net/cjm2484836553/article/details/105147592 <And ...

  4. 静态注册fragment_Fragment的静态和动态添加方式以及Fragment和Activity之间的通信方式...

    一.静态添加方式:创建好Fragment之后,在需要使用碎片的Activity的布局文件中添加 标签. 二.动态添加方式:先创建好fragment的布局文件,然后创建一个继承自Fragment的 类( ...

  5. 计算机网络协议是网民们签订的合同,关于网络协议,下列__________选项是正确的。A.是网民们签订的合同B.是计算机之间的相互通信需...

    关于网络协议,下列__________选项是正确的.A.是网民们签订的合同B.是计算机之间的相互通信需 更多相关问题 Many think soccer has important advantage ...

  6. fragment与activity之间的信息传递的两种方式

    因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常. fragment与activity之间的信息传递的两种方式: 1.第一种方式,也是最常用的方 ...

  7. Android Fragment和Activity之间的交互方式

    Android应用主要的UI框架:TabLayout+ViewPager+Fragment组合方式+宿主Activity 在这样的框架之下,就会涉及到很多控件的交互,fragment与activity ...

  8. Fragment与Activity之间的完美邂逅

    Fragment Activity 看下我实现的效果图这种真的特别常见点击左边的item替换右边的布局文件 MovieContent package view.zm.com.wyimtest.bean ...

  9. Android开发之旅-Fragment和Activity之间onCreateOptionsMenu的联系

    Fragment和Activity一样,可以重写onCreateOptionsMenu方法来设定自己的菜单,其实这两个地方使用onCreateOptionsMenu的目的和效果都是完全一样的,但是由于 ...

最新文章

  1. js异步提交form表单的解决方案
  2. 【Linux开发】V4L2应用程序框架
  3. kaggle比赛模型融合指南
  4. 网络基础知识 快速计算子网掩码的2种方法
  5. 《财富》世界500强想到的
  6. HttpComponents分析之连接池实现
  7. 国行 iPhone 12/Pro/Max双卡模式支持5G网络;支付宝推出「晚点付」功能;MySQL 8.0.22 GA|极客头条
  8. python自学行吗-没有编程基础,可以自学Python吗?
  9. numpy——zeros(), ones(), empty(), eye()
  10. “产品助理最重要的工作是 Android 版本的设计与测试”
  11. etc profile 的使用
  12. java时钟时针绘制代码_java实现时钟效果
  13. 转帖自勉:一个猎头的自述
  14. java 京东秒杀系统_京东秒杀浪费坑位惩罚你可知道?
  15. 【Unity3D-Mirror多人坦克大战】坦克生成、移动和摄像机跟随(二)
  16. HTML5期末大作业:电影网站设计——电影(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  17. 调用企业微信API,ios端异常
  18. 《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a(a\le 10^9)a(a≤10 9 ) 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除2向下取整)第几天变为1
  19. List<?>和list的区别
  20. C++控制台RPG游戏(序)

热门文章

  1. android怎么查看方法被谁调用,Android中查看布局文件中的控件(view,id)在哪里被调用(使用)...
  2. java中jsp怎么传递参数_急!Java问题,Java如何获得jsp传递的参数??
  3. linux脚本 let,通过shell 脚本查看服务器的时时流量
  4. ad16不能去除铺铜_海水小讲堂006 铜离子的正确使用姿势
  5. vue 实现文件下载
  6. MySQL按日期分组统计(按天统计,按月统计)
  7. java精确除法运算-BigDecimal
  8. MySQL CONCAT函数:字符串拼接
  9. java: -source 1.5 中不支持 diamond 运算符
  10. JVM 内存设置大小