Fragment之间传递数据

简介: 画面显示(XML)首先这是一个Activit显示上有两个Fragment容器,是为了显示两个Fragment。然后Activity加载了两个Fragment的数据并依次replace到了两个容器中。此时Activity就有了两个Fragment的对象,方便后续FragmentA获取FragmentB。

通过Activity传


画面显示(XML)


首先这是一个Activit显示上有两个Fragment容器,是为了显示两个Fragment。

然后Activity加载了两个Fragment的数据并依次replace到了两个容器中。

此时Activity就有了两个Fragment的对象,方便后续FragmentA获取FragmentB。



逻辑代码(Java)


在FragmentA和FragmentB中设置一个setData方法去改动一些TextView什么的。

然后最重要的一步!!

1)用getActivity()方法获取Activity的实例对象。

2)通过这个Activity对象去获取另一个Fragment的对象,通过findFragmentById/findFragmentByTag找到指定的另一个Fragment,或者Fragment作为Activity的公有成员变量直接使用。

3)然后再通过此FragmentB对象去调用Fragment的setData()方法,就可以从A传递给B数据了。

所以一个FragmentA先拿到其Activity对象,再通过这个Activity找到指定的FragmentB对象,然后调用其B方法,从而A传递B数据。



通过接口传递数据


目的:FragmentA想要发送数据给B。


在FragmentA中设置接口以及接收接口参数,和成员变量。

//保存FragmentB传来的接口对象
private OnFragmentChangeInfo mOnFragmentChangeInfo;
//设置公有方法,让FragmentB调用
public void SetOnFragmentChangeInfo(OnFragmentChangeInfo info){
    this.mOnFragmentChangeInfo=info;
}
//重写此接口的FragmentB需要什么数据就设置什么数据
interface OnFragmentChangeInfo{
    void String message(String data);
}


1)先让FragmentB获得FragmentA的实例对象,才能调用SetOnFragmentChangeInfo()方法和OnFragmentChangeInfo接口。


真正实现:是在FragmentB重写OnFragmentChangeInfo接口。

((FragmentA)fragment).setSetOnFragmentChangeInfo(new OnFragmentChangeInfo{
    @Override
    public void message(String data){
        tv.setText(data);
    }
});


2)此时B传给A了一个接口对象,并保存在mOnFragmentChangeInfo字段中。


//什么时候想要传给B就什么时候调用
mOnFragmentChangeInfo.message("我传过去数据咯,其他我不管咯,逻辑什么的你自己搞定");


3)这时调用传过来的对象的message方法,即可向B传数据。

目录
相关文章
|
C++
基于C++的简易计算器设计与实现
基于C++的简易计算器设计与实现
699 3
|
数据采集 存储 Java
高德地图爬虫实践:Java多线程并发处理策略
高德地图爬虫实践:Java多线程并发处理策略
|
XML Android开发 数据格式
android平滑动画效果--搜索框
android平滑动画效果--搜索框
492 0
android平滑动画效果--搜索框
|
数据可视化 搜索推荐 前端开发
漏刻有时数据可视化Echarts组件开发(16):乡镇街道下辖村级或社区级别的行政区域边界轮廓划分的svg解决方案
漏刻有时数据可视化Echarts组件开发(16):乡镇街道下辖村级或社区级别的行政区域边界轮廓划分的svg解决方案
504 0
|
前端开发 Android开发 Windows
27. 【Android教程】下拉选择框 Spinner
27. 【Android教程】下拉选择框 Spinner
650 2
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
Java 程序员
谈谈程序员如何学习新技术
文章分享了作者学习新技术的经验和方法,从确定学习目标、制定学习计划到学中坚持和学后应用,强调了持续学习的重要性,并鼓励程序员通过实践、写作、分享和开源贡献等方式不断成长和提升技术能力。
|
安全 Android开发 开发者
Service与Activity如何实现通信
Android为Service与Activity之间的通信提供了多种灵活的方式,开发者可以根据应用程序的需求选择合适的通信机制。对于多数简单通信需求,Intent和Binder通常就足够使用。另外,要注意线程安全和数据同步的问题,尤其是在多线程环境下操作UI或Service中的共享资源时。
438 0
|
XML Android开发 数据格式
11. 【Android教程】帧布局 FrameLayout
11. 【Android教程】帧布局 FrameLayout
393 1
|
机器学习/深度学习 算法
【MATLAB】基于VMD-SSA-LSTM的回归预测模型
【MATLAB】基于VMD-SSA-LSTM的回归预测模型
475 4