适配器(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 ...
随机推荐
- efcore技巧贴-也许有你不知道的使用技巧
前言 .net 环境近些年也算是稳步发展.在开发的过程中,与数据库打交道是必不可少的.早期的开发者都是DbHelper一撸到底,到现在的各种各样的ORM框架大行其道.孰优孰劣谁也说不清楚,文无第一武无 ...
- Idea创建maven加载过慢解决方法
添加标签:archetypeCataloginternal问题解决!
- LWPR
Scriptable Render Pipeline https://docs.unity3d.com/Manual/ScriptableRenderPipeline.html Unity轻量 ...
- 关于js与jquery中的文档加载
jquery中的$(document).ready()类似于javascript中的window.onload(),但是其中还是有很大区别的 1.jquery中的可以简化为$().ready(),$( ...
- Jmeter简单操作 取样器 ,监听器
1.创建线程组 1.2 (1) 线程组主要包含三个参数:线程数.准备时长(Ramp-Up Period(in seconds)).循环次数. (2) 线程数:虚拟用户数.一个虚拟用户占用一个进程或线 ...
- JVM学习第三天(JVM的执行子系统)之字节码指令
早上看了Class类文件结构,晚上继续来看字节码指令,毕竟谁也不是一步登天的(说白了还是穷); 字节码指令 Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(称为操作码,Opcode ...
- input.nextLine()和input.next()的区别
输入:dfjjvh eigdj iugydchdgh 使用input.next()读取到的是:dfjjvh 使用input.nextLine()会读取全部
- Python多行缩进反向缩进快捷键
1.Python增加缩进快捷键:Ctrl+Alt+] 或tab键或shift+tab键 2.Python减少缩进快捷键:Ctrl+Alt+[
- SpringBoot2 集成日志,复杂业务下的自定义实现
本文源码:GitHub·点这里 || GitEE·点这里 一.日志体系集成 1.日志管理 在系统的开发中,最关键的一个组件工具就是日志,日志打印方便问题排查,或者生产事故回溯,日志记录用来监控并分析系 ...
- Java中枚举的用法
public enum Week { DAY1("周一", 0.9), DAY2("周二", 0.9), DAY3("周三", 0.8), ...