Fragment与Activity之间的相互通信
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之间的相互通信相关推荐
- Android(Fragment和Activity之间通信)
Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...
- Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
[正文] 一.接口回调的简单引入: 我们先来看一个简单的接口回调的例子: 新建一个Java工程,然后新建一个包.然后新建一个A.java文件: A.java代码如下: 1 package com.cn ...
- Android面试专题系列(四):Activity之间如何进行通信→LiveDataBus
不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨-https://blog.csdn.net/cjm2484836553/article/details/105147592 <And ...
- 静态注册fragment_Fragment的静态和动态添加方式以及Fragment和Activity之间的通信方式...
一.静态添加方式:创建好Fragment之后,在需要使用碎片的Activity的布局文件中添加 标签. 二.动态添加方式:先创建好fragment的布局文件,然后创建一个继承自Fragment的 类( ...
- 计算机网络协议是网民们签订的合同,关于网络协议,下列__________选项是正确的。A.是网民们签订的合同B.是计算机之间的相互通信需...
关于网络协议,下列__________选项是正确的.A.是网民们签订的合同B.是计算机之间的相互通信需 更多相关问题 Many think soccer has important advantage ...
- fragment与activity之间的信息传递的两种方式
因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常. fragment与activity之间的信息传递的两种方式: 1.第一种方式,也是最常用的方 ...
- Android Fragment和Activity之间的交互方式
Android应用主要的UI框架:TabLayout+ViewPager+Fragment组合方式+宿主Activity 在这样的框架之下,就会涉及到很多控件的交互,fragment与activity ...
- Fragment与Activity之间的完美邂逅
Fragment Activity 看下我实现的效果图这种真的特别常见点击左边的item替换右边的布局文件 MovieContent package view.zm.com.wyimtest.bean ...
- Android开发之旅-Fragment和Activity之间onCreateOptionsMenu的联系
Fragment和Activity一样,可以重写onCreateOptionsMenu方法来设定自己的菜单,其实这两个地方使用onCreateOptionsMenu的目的和效果都是完全一样的,但是由于 ...
最新文章
- js异步提交form表单的解决方案
- 【Linux开发】V4L2应用程序框架
- kaggle比赛模型融合指南
- 网络基础知识 快速计算子网掩码的2种方法
- 《财富》世界500强想到的
- HttpComponents分析之连接池实现
- 国行 iPhone 12/Pro/Max双卡模式支持5G网络;支付宝推出「晚点付」功能;MySQL 8.0.22 GA|极客头条
- python自学行吗-没有编程基础,可以自学Python吗?
- numpy——zeros(), ones(), empty(), eye()
- “产品助理最重要的工作是 Android 版本的设计与测试”
- etc profile 的使用
- java时钟时针绘制代码_java实现时钟效果
- 转帖自勉:一个猎头的自述
- java 京东秒杀系统_京东秒杀浪费坑位惩罚你可知道?
- 【Unity3D-Mirror多人坦克大战】坦克生成、移动和摄像机跟随(二)
- HTML5期末大作业:电影网站设计——电影(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
- 调用企业微信API,ios端异常
- 《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a(a\le 10^9)a(a≤10 9 ) 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除2向下取整)第几天变为1
- List<?>和list的区别
- C++控制台RPG游戏(序)
热门文章
- android怎么查看方法被谁调用,Android中查看布局文件中的控件(view,id)在哪里被调用(使用)...
- java中jsp怎么传递参数_急!Java问题,Java如何获得jsp传递的参数??
- linux脚本 let,通过shell 脚本查看服务器的时时流量
- ad16不能去除铺铜_海水小讲堂006 铜离子的正确使用姿势
- vue 实现文件下载
- MySQL按日期分组统计(按天统计,按月统计)
- java精确除法运算-BigDecimal
- MySQL CONCAT函数:字符串拼接
- java: -source 1.5 中不支持 diamond 运算符
- JVM 内存设置大小