一、适配器(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. asyncio异步模块的21个协程编写实例

    启动一个无返回值协程 通过async关键字定义一个协程 import sys import asyncio async def coroutine(): print('运行协程') if sys.ve ...

  2. 温故知新——Spring AOP(二)

    上一篇我们介绍Spring AOP的注解的配置,也叫做Java Config.今天我们看看比较传统的xml的方式如何配置AOP.整体的场景我们还是用原来的,"我穿上跑鞋",&quo ...

  3. OpenCV实现人脸检测

    OpenCV实现人脸检测(转载)  原文链接:https://www.cnblogs.com/mengdd/archive/2012/08/01/2619043.html 本文介绍最基本的用OpenC ...

  4. 3个必备cookie实用方法

    今天跟大家介绍一下三种cookie的使用方法,selenium提供了我们add_cookie()方法来跳过验证码直接登录的方法.我们现在以博客园登录为例,都知道现在博客园登录要拼图验证. 先在网页打开 ...

  5. 2020.08.31 Unit 10(暂未完成)

    [重点短语] 01.at night 在晚上 02.in a more natural environment 在一个更加自然的环境中 03.all year round 一年到头,终年 04.be ...

  6. 记录laravelchina中的微信小程序教程的npm install安装报错

    npm安装报错时 npm ERR! code EIOnpm ERR! syscall symlinknpm ERR! path ../@babel/parser/bin/babel-parser.js ...

  7. package_ios

    PlistBuddy简单使用 https://www.jianshu.com/p/2167f755c47e xcodebuild 命令 https://www.jianshu.com/p/c32263 ...

  8. 面试【JAVA基础】集合类

    1.ArrayList的扩容机制 每次扩容是原来容量的1.5倍,通过移位的方法实现. 使用copyOf的方式进行扩容. 扩容算法是首先获取到扩容前容器的大小.然后通过oldCapacity (oldC ...

  9. 15_Python的模块module

    1.模块的概述 1.模块是Python程序架构的一个核心概念,每一个以.py结尾的Python源代码文件都是一个模块 2.模块名和标识符的命名规则一样,由数字字母下划线组成且不能以数字开头,也不要和系 ...

  10. 09. jenkins配置不同用户显示不同视图

    jenkins配置不同用户显示不同视图 一.新建用户 1.1 新建用户 Manage Jenkins -> Manage Users -> 新建用户     1.2 我创建了三个用户,分别 ...