适配器(adapter)与fragment之间、fragment与activity之间的通信问题
通过本地广播进行通信
步骤如下
在adapter中代码
声明本地广播管理
private LocalBroadcastManager localBroadcastManager;
在viewholder中初始化和建立通信intent
localBroadcastManager = LocalBroadcastManager.getInstance(context);
final Intent intent = new Intent(MessageFragment.LOCAL_BROADCAST);发送广播intent.putExtra("readIds", readIds); //通知fragment,让它去调用queryCity()方法
intent.putExtra("list", (Serializable) list);
localBroadcastManager.sendBroadcast(intent); //发送本地广播 通知fragment该刷新了在fragment中代码private IntentFilter intentFilter;
private LocalReceiver localReceiver; //本地广播接收者
private LocalBroadcastManager localBroadcastManager; //本地广播管理者 可以用来注册广播
private class LocalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(!action.equals(LOCAL_BROADCAST)){
return ;
}
String[] readIds =intent.getStringArrayExtra("readIds");
List<Message> messages = (List<Message>) intent.getSerializableExtra("list");
setList(messages,readIds);
}
}
/**
* 发送本地广播的action
*/
public static final String LOCAL_BROADCAST = "com.xfhy.casualweather.LOCAL_BROADCAST";在onCreateView中初始化//获取LocalBroadcastManager 本地广播管理者实例
localBroadcastManager = LocalBroadcastManager.getInstance(getContext());
localReceiver = new LocalReceiver();
intentFilter = new IntentFilter();
intentFilter.addAction(LOCAL_BROADCAST); //添加action
localBroadcastManager.registerReceiver(localReceiver,intentFilter);二、fragment与activity之间的通信问题通过回调函数 在fragment中 声明private CallBackValue callBackValue;/**
* fragment与activity产生关联是 回调这个方法
*/
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
//当前fragment从activity重写了回调接口 得到接口的实例化对象
callBackValue =(CallBackValue) getActivity();
}
//定义一个回调接口
public interface CallBackValue{
public void SendMessageValue(String strValue);
}使用时调用callBackValue.SendMessageValue(response.getJSONObject("message_unread").getJSONObject("data").getString("unread_count"));在activity中重写方法@Override
public void SendMessageValue(String strValue) {
// TODO Auto-generated method stub
if (strValue == "0" || strValue.isEmpty() || strValue.equals("0")) {
count.setVisibility(View.GONE);
} else {
count.setText(strValue);
count.setVisibility(View.VISIBLE);
}原文参考 https://blog.csdn.net/xfhy_/article/details/61195558
适配器(adapter)与fragment之间、fragment与activity之间的通信问题的更多相关文章
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- Fragment与Activity之间的通信
我个人将Fragment与Activity间的通信比喻为JSP与Servlet间的通信,fragment中用接口的方式来进行与Activity的通信.通信的结果可以作为数据传入另一个Fragmen ...
- Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 安卓Fragment和Activity之间的数据通讯
Fragment是Android3.0之后才推出来的.可以用来做底部菜单,现在很多APP都有用到这个底部菜单.当然TabHost也可以用来做底部菜单,但是Fragment来做,动画效果这些可以做得更炫 ...
- Fragment的生命周期和Activity之间的通信以及使用
Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragme ...
- Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)
Fragment与Activity之间的数据交换,通常含有3: 一.Fragment从Activity获取数据(仅本文介绍了一个第一): 两.Activity从Fragment获取数据: 三.Frag ...
- Fragment和Activity之间通过广播的方式传递数据
四大组件之间传递数据可以用广播,但是有次面试官说太重了,用eventbus代替.下面的广播传递数据方法仅当学习参考. 1.管理类 /** * 广播管理类:注册广播.注销广播.发送广播 * @autho ...
- Android 笔记-Fragment 与 Activity之间传递数据
Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...
- Android(Fragment和Activity之间通信)
Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...
随机推荐
- muduo源码解析11-logger类
logger: class logger { }; 在说这个logger类之前,先看1个关键的内部类 Impl private: //logger内部数据实现类Impl,内部含有以下成员变量 //时间 ...
- 4gl游标cursor
游標有多種寫法,一種是報表里常見的 這種寫法呢,先定義一個接受sql語句的變量l_sql,而接受到的語句實際上只是一連串的字符串,還包含了4gl裡面的一些變量.寫好的l_sql裡面之所以有多個分段的雙 ...
- 解决SpringBoot jar包中的文件读取问题
前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码中读取资源文件(比如word文档.导出模版等),本地开发时可以正常读取 ,但是,当我们 ...
- Go语言从入门到高薪之路(一)-- 初识与安装
为什么要学习Go语言? Go语言又称Golang,它是21世纪的编程语言,学好了就能拿高薪,拿了高薪就能实力装逼,有了实力就能泡妹子...(我就问你吊不吊,想不想学?) Go语言有什么特点和优势? G ...
- Java面试题(Kafka篇+zookeeper 篇)
Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafk ...
- TX-LCN 分布式事务框架
第十章 TX-LCN 分布式事务框架 (Spring Cloud 高级) 一. 什么是分布式事务 分布式事务是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位 于不同的分布式系统的不同 ...
- Golang | 简介channel常见用法,完成goroutin通信
今天是golang专题的第14篇文章,大家可以点击上方的专辑回顾之前的内容. 今天我们来看看golang当中另一个很重要的概念--信道.我们之前介绍goroutine的时候曾经提过一个问题,当我们启动 ...
- 揭秘|一探腾讯基于Kubeflow建立的多租户训练平台背后的技术架构
腾讯业务及组织架构现状 先简单和大家介绍一下腾讯内部的业务及相关组织架构的现状,有助于帮助大家理解为什么我们会基于后面的架构来设计整套方案. 下图的应用大多数人经常会用到,比如微信.腾讯视频.游戏等等 ...
- JS中强制类型转换
JavaScript提供了3种强制类型转换的方法 一.Boolean()方法 该方法将指定的参数转换成布尔型.Boolean(object).参数object可以是字符串对象.数值对象.DOM对象等. ...
- 如何解读 Java IO、NIO 中的同步阻塞与同步非阻塞?
原文链接:如何解读 Java IO.NIO 中的同步阻塞与同步非阻塞? 一.前言 最近刚读完一本书:<Netty.Zookeeper.Redis 并发实战>,个人觉得 Netty 部分是写 ...