使用Bundle+Message+Handler实现Fragment与Activity通信(可互传数据互调用方法)
来源:互联网 发布:mac电池循环次数 cmd r 编辑:程序博客网 时间:2024/05/19 18:42
需求
Fragment中监听到组件事件后,将相应的参数封装后传递给Activity,同时调用Activity中某个方法
实现思路
- Fragment中使用Bundle对欲传递的多个数据进行打包,生成Bundle对象。同时,创建Message对象,设置Message对象的数据源为打包后的Bundle对象,设置Message对象的what字段以便提取message时进行识别。
- Activity中定义一个Handler,接收Fragment传递过来的Message对象,提取Message对象中的Bundle对象,取得Bundle中的数据,调用想调用的某个方法。
实现代码
Fragment中:
private void SetListeners(){ // 设置分析按钮监听 analyseBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 创建Message及Bundle对象 Message msg = new Message(); Bundle bundle = new Bundle(); // bundle填充数据 bundle.putInt("age",age); bundle.putFloat("height",height); bundle.putFloat("weight",weight); bundle.putFloat("OGTT",ogtt); // 设置msg的what字段及数据源 msg.what = 1; msg.setData(bundle); // 发送Message handler.sendMessage(msg); } })}
Activity中:
// 定义一个Handler用于接收Fragment给Activity发出来的指令@SuppressLint("HandlerLeak")public Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg!=null){ switch (msg.what) { // 根据what字段辨识出消息 case 1: // 取出数据包,解包得数据 Bundle bundle = msg.getData(); age = bundle.getInt("age"); weight = bundle.getFloat("weight"); height = bundle.getFloat("height"); ogtt = bundle.getFloat("OGTT"); // 此处调用Activity中你想调用的方法 AnalyseDIAB(age,height,weight,ogtt); break; default: break; } } }};
阅读全文
0 0
- 使用Bundle+Message+Handler实现Fragment与Activity通信(可互传数据互调用方法)
- Fragment与Activity交互方式使用Bundle
- 实现Fragment与Activity通信
- Activity与Fragment通信——回调方法实现
- Fragment跟Activity之间的通信(互相调用方法)
- Fragment与Activity交互方式使用Handler
- Activity如何使用Handler与Service通信
- Umeng用户反馈提示实现(Handler完成Activity和Fragment之间的通信)
- Fragment学习之使用接口回调的方式实现Fragment与Activity通信
- Fragment学习之使用接口回调的方式实现Fragment与Activity通信
- handler与Message使用
- 深入分析:Fragment与Activity交互的几种方式(二,使用Bundle)
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- 零基础使用wordpress搭建个人博客
- 《PHP之正则表达式系统总结》
- ACM-ICPC 2017 Asia Qingdao-Chenchen, Tangtang and ZengZeng
- java获得CPU使用率,系统内存,虚拟机内存等情况
- MySQL常用函数
- 使用Bundle+Message+Handler实现Fragment与Activity通信(可互传数据互调用方法)
- 用画小狗的方法来解释Java中的值传递
- 压岁钱
- device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/dev
- Python:ImportError: No module named indexes.base
- 从头到尾彻底理解傅里叶变换算法(上)
- Java学习——多维数组
- 阶乘 I
- Android7.0 PowerManagerService(1) 启动过程