Fragment与Activity进行通信

Fragment与activity之间的通信 Fragment与activity的两种通信方式 Fragment与activity之间有多种通信方式,今天我们主要说两种通信方式,直接在一个activity传值给Fragment的方法和Fragment直接调用Activity中的public方法 Fragment直接调用Activity中的public方法 activity传值给fragment,在这其中我们首先得使用Bundle方法,首... 阅读详情

前言

  Fragment是android开发中常用的一个控件,我们可以在Fragment内部进行不同的控件之间的通信,如点击了一个按钮就可以在一个TextView上显示一个数据,因为Button和TextView都是在Fragment内部,能够得到它们的对象,所以我们当然可以进行通信,那么,点击Fragment内部的按钮能够在Activity中的TextView上显示吗?我们在Fragment内部没法直接得到Activity中的对象,所以本文就是教大家如何在Fragment和Activity之间进行通信。

实现

  Fragment和Activity之间的通信就是把Fragment的数据传到Activity中,当然我们可以使用静态变量,在Fragment内部就可以使用Activity中静态变量,当然也就可以把数据传输了过去,但是,这种方法太low了,绝对会被别人说没水平,而且代码之间的耦合性太高,是我们所不欢迎的,那么我们就要使用另一种方法 – 接口。

  接口是java中的语法,以前不太明白接口的使用,但是真正使用了接口时候才会明白接口的好处,本文就是利用接口实现通信的。

  我们先来看一下效果图:


  可以看到,图中灰色的是一个Fragment,里面有两个按钮和一个TextView,点击按钮之后,在Activity中显示按钮的文字,我们需要做的就是在Fragment和Activity中简历联系,把按钮的文字传递过去。

  这里我们定义一个接口:IFragmentListener

public interface IFragmentListener {
    void onFragmentClick(View v);
}

  在接口里面有一个方法,传入的参数是一个View对象,这个View对象就是被点击的控件的对象,传入之后在Activity中得到这个对象就可以得到被点击控件的信息了。

  下面是Fragment的代码:

public class MyFragment extends Fragment implements OnClickListener{

    private Button btn_java,btn_c;
    private IFragmentListener mListener;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.v_fragment, container,false);
        initView(v);
        return v;
    }

    private void initView(View v) {
        btn_c = (Button) v.findViewById(R.id.btn_c);
        btn_java = (Button) v.findViewById(R.id.btn_java);
        btn_c.setOnClickListener(this);
        btn_java.setOnClickListener(this);
    }

    /**
     * Fragment和Activity绑定起来
     */
    @Override
    public void onAttach(Activity activity){
        super.onAttach(activity);
        mListener = (IFragmentListener) activity;
    }

    @Override
    public void onClick(View v) {
        mListener.onFragmentClick(v);
    }

}

  在MyFragment里面我们定义了IFragmentListener的对象,然后在onAttach中给mListener赋值。那么,问题来了,onAttach是什么方法,有什么用?

  关于这个问题就必须要牵扯到Fragment的生命周期了,类似Activity的生命周期,但是本文不打算在这里深入讲解它,只会告诉你onAttach方法的作用。onAttch方法是Fragment生命周期中的一个方法,它的作用就是把Fragment所依附的Activity的对象传入到Fragment中,也就是说我们在Fragment中可以得到Activity的对象。那么我们拿到Activity的对象有什么用呢?还是先来看看MainAcitivity的代码吧:

public class MainActivity extends Activity implements IFragmentListener{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onFragmentClick(View v){
        String data = ((Button)v).getText().toString();
        ((TextView)findViewById(R.id.text)).setText(data);

    }

}

  可以看到原来我们的MainActivity继承了IFragmentListener接口,即继承onFragmentClick方法,在MyFragment的onAttach方法里面传入的继承了IFragmentListener接口的MainAcitivty对象,当mListener对象的onFragmentClick方法被调用的时候执行的就是MainAcitivyt中的方法,也就是View对象被传入到了Activity中,我们就可以在Activity中得到了被点击的Fragment中的控件对象然后进行我们想要的操作。

小结

  接口的使用可以降低Fragment和Activity中的耦合性,如果在Fragment中使用Activity中的静态变量,那么这个Fragment只能与当前Activity进行绑定,就不能和其他的Activity进行绑定了,这样就不能做到Fragment的通用性,在开发中尽量避免这样的问题,不断的去优化自己的代码,降低耦合才是我们的目标。

Android中Fragment与Activity的相互通信 Fragment向Activity通信:    实现Fragment向Activity通信的方法为在Fragment内部定义接口,在接口中定义要实现的方法,并在绑定的Activity中实现这个接口,在Fragment 的OnAttach方法中获得绑定的Activity对象,并将得到的Activity对象强制转化为接口对象,这样就可以在fragment中操作activity实现接口之后继承的方法,从 阅读详情

相关推荐

Fragment 与 Activity 之间的通信

一、前言 在 Fragment 的创建、替换与移除 我们已经讲了 Fragment 的静态添加和动态添加,今天我们来讲 Fragment 的生命周期 和 Fragment 与 Activity 之间的交互。 二、Fragment 的生命周期 和 Activity 一样,Fragment 也有自己的生命周期,并且和 Activity 的生命周期非常相似。具体如下图所示: 这里我们选择几个比较重要的状态来讲解一下: onAttach():当 Fragment 和 Activity 建立关联时调用; onCr

weixin_38478780的博客 1062

Fragment和Activity之间的通信

Fragment和Activity之间的通信

xiaokang666的博客 3887

Activity与Fragment之间的通信详解

当我们使用Fragment的时候会常常与其他的Fragment或者宿主Activity进行交互,今天我们就来讲讲Fragment和Activity之间如何进行通信。       一、 接口回调机制      在讲Fragment和Android通信之前,我们先看一个应用场景,现在有一个需求,在Activity中有一个Button,有个一TextView。现在业务要求是这样,点击Button,改

源码有毒的专栏 2246

Activity与Fragment的通信

Bundle和接口(观察者模式)的实现方式

蔡林浩的博客 4640

[Android]Fragment与Activity之间的通信方案

Fragment依赖于Activity,那么它们之间的通信就必须要涉及。通过自己的寻找和实践,知道了Fragment和Activity之间的通信方案大概有5种,各有优缺点,用哪个方案看需求吧。 setArguments(Bundle args) Handler Broadcast广播 EventBus 接口回调 上代码,开始分析。自己写了个小Demo:Fragment通信Demo ,里边...

Ekko的博客 2402

Android中Fragment与Activity的通信机制详解

本文还有配套的精品资源,点击获取 简介:在Android开发中,Fragment和Activity是构成用户界面的基础组件,它们之间有效的通信对实现功能丰富的应用至关重要。本文将深入探讨Fragment与Activity之间的数据传递和交互方法,包括直接和间接通信机制,生命周期协调,以及使用Android Jetpack Navigation组件等技术要点。 1. F...

weixin_42515392的博客 1247

【Fragment 与 Activity 通信的方式】

Fragment 与 Activity 通信的的几种方式

春分之际的博客 1648

Fragment和Activity通信以及Fragment之间通信的方式(1)

Fragment和Activity通信以及Fragment之间通信的方式(1),http://blog.youkuaiyun.com/yalinfendou博客中有详细介绍……

Activity与Fragment之间通信的多种方式

前言 本文主要介绍Activity与Fragment之间通信,以及同属于一个Activity的Fragment之间的通信。主要的方式有 1、通过

qq_41818873的博客 8096

一步一步搭建S32K14x的AutoSar项目----S32DS 代码工程的搭建

一步一步搭建S32K14X的AutoSar项目----S32DS代码工程的搭建

wo580231的博客 3488

汇川EASY系列之以太网通讯(套接字socket做主站)

本文讲解汇川Easy系列使用以太网套接字socket通讯,本例中EasyPLC做主站。文中按步进行操作。细节明确。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 2191

136.Activity和Fragment的通信

当 Activity 直接调用 Fragment 的方法时,Activity 就需要了解 Fragment 的内部实现细节。Activity 和 Fragment 经常需要互相传递数据或者通知对方发生了某些事件。Fragment 不依赖于特定的 Activity,方便复用,解耦合。Fragment 中发生了某些事件,需要通知 Activity。(Activity 向 Fragment 传递数据)

2303_79132118的博客 1260

PLC1200使用CB1241RS485通讯模块做从站进行Modbus Rtu通信

添加新设备(PLC)->设备和网络管理->点击PLC->看到硬件目录选择通信板->点到点->CB1241(RS485)->看到6ES7241-1CH30-1XB0选择添加,如图。指向Modbus保持寄存器数据块的指针 我这里指向了自定义的DB块数据中一个INT数组。在通信->通信处理模块->MODBUS(选择不带RTU的通信指令块)注意:接线时,TRA接485调试模块的B- TRB接调试模块的A+组态后的硬件标识符 270 对应自己组态后自动生成的。1:事务完成,且无任何错误。波特率对应自己使用的。

swmyaopeng的博客 2万+

Activity与Fragment通信

前言 现在开发的很多项目都会使用Fragment,使用Fragment就是涉及到与其他问题。 1.Activity与Fragment通信 Activity ->Fragment 传递参数,使用Bundle Fragment fragment = new Fragment(); Bundle bundle = new Bundle(); bundle.putSerializable(...

坚持学习 2419

端侧部署与优化:让 AI 真正走进现实生活的关键技术

AI 的开发流程分为 “训练” 与 “推理” 两大阶段。在训练阶段,科研人员依托云端海量数据和高性能 GPU 算力,构建出精度优异的 AI 模型 —— 比如能识别 1000 种物体的图像分类模型、能理解人类语言的自然语言处理模型。但这些在云端 “战绩斐然” 的模型,若直接应用到现实场景中,却会面临三大 “落地困境”。从云端到端侧,从模型压缩到硬件适配,端侧部署与优化技术解决了 AI 落地的核心难题,让 AI 不再是实验室里的 “高精尖技术”,而是融入日常生活的 “实用工具”。

m0_63477749的博客 1052

STM32 SYSTICK定时器及延时函数详解

STM32 SYSTICK及延时函数详解 SysTick定时器 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心

w1050321758的博客 2366

android fragment和activity通信,Fragment 与 Activity 之间的通信

一、前言在 Fragment 的创建、替换与移除 我们已经讲了 Fragment 的静态添加和动态添加,今天我们来讲 Fragment 的生命周期 和 Fragment 与 Activity 之间的通信。二、Fragment 的生命周期和 Activity 一样,Fragment 也有自己的生命周期,并且和 Activity 的生命周期非常相似。具体如下图所示:这里我们选择几个比较重要的状态来讲解...

weixin_39967405的博客 937

SPAD IMX479规格_分辨率

当然IMX479具备IMX459几乎全部的数字架构,但也有一个缺点就是贵,这个让头部的主机厂有些犹豫,毕竟大家都在集中火力想把车载LiDAR玩进千元机。如果用一片IMX479是不太可能实现千元内部的,当然国产也在奋起直追,特别在前面的几家SPAD厂商都具备开发IMX479的实力,但相对来说落地可能更是当下所考虑的,IMX479的迭代是基于IMX459,小编已经注意到国内有一两家已经在挑战479的规格了,如果国产SPAD没有大规模量产就直接流片IMX479的规格,可能就有点忽略市场的反馈闭环。

致力于lidar应用开发 2416

Fragment与Activity间的通信 Fragment与Fragment间的通信

Fragment与Activity间的通信 视频Fragment与Acctivity间的通信 Activity向Fragment传值 Activity向引入的Fragment传值步骤: 1.Activity中创建Fragment对象,调用setArguments(bundle)方法储存值 2.Fragment中调用getArguments()获取传递的bundle对象解析获取具体值 ...

lxjhoney的博客 351

巡检领域红外热成像相机镜头焦距选择方法总结

摘要:巡检机器人红外热成像相机镜头焦距的选择需综合考虑检测距离、视场角、目标分辨率等核心要素。短焦距(4-6mm)适用于室内近距离巡检,中焦距(12-19mm)适合变电站等中等距离场景,长焦距(25-50mm)则用于光伏板等远距离检测。选型需遵循焦距计算公式f=SL×d,确保目标占据≥3×3像元,同时考虑机器人安装空间、环境适应性及软件联动需求。建议通过样机实测或仿真软件验证选型合理性,以实现对设备故障的精准识别。

start_up_go的博客 299

Claude Code 完全指南:从入门到精通

《AI编程助手ClaudeCode深度指南》摘要 ClaudeCode作为新一代AI编程助手,凭借200K tokens的超长上下文窗口和深度代码理解能力,正在重塑开发工作流程。本文系统介绍了从安装配置到高级应用的完整使用指南: 核心优势包括: 项目级代码理解能力 Agent自主规划复杂任务 原生终端集成支持 多文件协同编辑功能 实战应用场景: 快速理解陌生项目架构 诊断性能瓶颈并提供优化方案 自动生成符合规范的API代码 开发可复用技术组件 高级技巧: 通过CLAUDE.md定义项目规范 合理使用/cle

分享AI、区块链技术及应用,未来已来 603

Fragment与Activity通信

Fragment与Activity通信 Fragment可调用getActivity()方法获取它所在的Activity Activity可调用FragmentManager的findFragmentById()或findFragmentByTag()方法获取Fragment Activity ——> Fragment: 在Activity中创建Bundle数据包,并调用Fragment的...

qq_28952543的博客 214

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android:Fragment与Activity之间的通信方式简单介绍

FragmentFragment与Activity之间的通信方式1、什么是Fragment与Activity之间的通信方式?3、Activity 如何传递数据到 Fragment?3、Fragment 如何传递数据到 Activity参考 Fragment与Activity之间的通信方式 1、什么是Fragment与Activity之间的通信方式? 常进行Android原生开发的同学都知道,Activity与Fragment之间、Fragment与Fragment之间的交互都是常规操作,是为进行开发的常规技

JMW1407的博客 7037

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android中Fragment与Fragment,Fragment与Activity之间的通信

上一篇文章讲解了Fragment的一些基本用法,主要包括Fragment的动态和静态添加的问题。但是在实际的项目开发中,只知道这些还不够,还需要掌握Fragment与Fragment,Fragment与Activity之间的数据通信问题。 Fragment与Fragment之间的通信 一个Activity中经常会包含多个Fragment,多个Fragment之间的数据通信就变成了一个问题,下面

SparkYuan 1458

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android 中Fragment与Activity通信大汇总

最近把跟小伙伴项目的一部分做完了,终于没借口偷懒了,今天就把Fragment与Activity之间通信做一个大汇总。 1、Activity与Fragment通信。 Activity向Fragemnt中传入数据时,通常将数据封装到一个Bundle对象中,通过setArguments()方法将对象传入启动的Fragment,在Fragment中,我们可以通过getAragument()方法获得bun

sinat_29962405的博客 2022
上一篇: 使用DrawerLayout实现双向侧滑菜单
下一篇: android小游戏“24点”放源码了!!
潘建成
博客等级 码龄12年 139粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值