一、适配器(adapter)与fragment之间通信

通过本地广播进行通信

步骤如下

在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之间的通信问题的更多相关文章

  1. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  2. Fragment与Activity之间的通信

      我个人将Fragment与Activity间的通信比喻为JSP与Servlet间的通信,fragment中用接口的方式来进行与Activity的通信.通信的结果可以作为数据传入另一个Fragmen ...

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

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  4. 安卓Fragment和Activity之间的数据通讯

    Fragment是Android3.0之后才推出来的.可以用来做底部菜单,现在很多APP都有用到这个底部菜单.当然TabHost也可以用来做底部菜单,但是Fragment来做,动画效果这些可以做得更炫 ...

  5. Fragment的生命周期和Activity之间的通信以及使用

    Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragme ...

  6. Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)

    Fragment与Activity之间的数据交换,通常含有3: 一.Fragment从Activity获取数据(仅本文介绍了一个第一): 两.Activity从Fragment获取数据: 三.Frag ...

  7. Fragment和Activity之间通过广播的方式传递数据

    四大组件之间传递数据可以用广播,但是有次面试官说太重了,用eventbus代替.下面的广播传递数据方法仅当学习参考. 1.管理类 /** * 广播管理类:注册广播.注销广播.发送广播 * @autho ...

  8. Android 笔记-Fragment 与 Activity之间传递数据

    Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...

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

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

随机推荐

  1. 洛谷 P3951 NOIP 2017 小凯的疑惑

    洛谷 P3951 NOIP 2017 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付 ...

  2. laravel kernel解析过程

    laravel kernel解析过程 前面的两篇laravel文章过后,可以在bootstrap/app.php中拿到$app这个实例, app.php中 接下来通过singleton方法绑定了三个闭 ...

  3. layaair 物理

    box2d http://box2d.org Box2D JS https://sourceforge.net/projects/box2d-js/ Box2D一:基础知识 https://www.c ...

  4. Guava Retrying

    目录 依赖 使用demo RetryerBuilder 实现callable接口 调用 git 参考 依赖 <dependency> <groupId>com.github.r ...

  5. 浅谈备受开发者好评的.NET core敏捷开发工具,讲讲LEARUN工作流引擎

    通俗来讲,所谓一个工作流管理系统,如果将其拆分出来一个个单讲话,大致可理解为由工作流引擎.工作流设计器.流程操作.工作流客户界面. 流程监控.表单设计器.与表单的集成以及与应用程序的集成等几个部分组成 ...

  6. Vue 3.0 中令人激动的新功能:Composition API

    正如你所期望的那样,Vue 3带来了很多令人兴奋的新功能.值得庆幸的是,Vue团队主要是在当前API的基础上引入了一些补充和改进,而不是进行重大更改,所以已经了解Vue 2的人应该很快就会对新的语法感 ...

  7. Redis安装问题解决方案

    Redis部署采坑记   Redis部署采坑记 问题一: 问题描述: make 编译源码时报错 问题详解: 因为缺少gcc-c++编译器的原因 解决方案: 方案一: yum -y install gc ...

  8. Nginx小功能合集

    13.1. 跨域处理 问题由来:浏览器拒绝执行其它域名下的ajax运作 ---如果浏览器在static.enjoy.com对应的html页面内,发起ajax请求偷盗www.enjoy.com域名下的内 ...

  9. IDEA编写JavaWeb出现乱码,成功解决!

    使用IDEA写JavaWeb项目时,总会出现编码出错等问题,比如下面这样,页面显示出来一大堆乱码,下面跟着我来操作一下,可以成功解决! 首先在IDEA安装目录下有一个:bin的文件夹,打开后找到如下两 ...

  10. spring boot+spring security集成以及Druid数据库连接池的问题

    贴工程目录,其中bll目录下是service+dao层,common是一些公用的模块及功能类,web是controller层 用到了druid及Redis,工具及配置类目录(本文不介绍如何配置drui ...