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传数据。

目录
相关文章
|
6月前
|
开发者 iOS开发
如何实现 UIViewController 之间的数据传递?
如何实现 UIViewController 之间的数据传递?
49 1
|
6月前
|
小程序
子组件调用父组件的方法并传递数据
子组件调用父组件的方法并传递数据
|
6月前
|
存储 前端开发 JavaScript
多个页面之间如何进行数据传递
多个页面之间如何进行数据传递
194 0
|
JavaScript
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
129 0
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
|
JSON Java 数据格式
Activity之间使用Intent传递大量数据带来问题
Intent在传递数据时是有大小限制的,这里官方并未详细说明,不过通过实验的方法可以测出数据应该被限制在1MB之(1024KB),采用的是传递某产品详情,发现当数据大小超过1024的时候,程序就会出现闪退、停止运行等异常(不同的手机反应不同),因此可以判断Intent的传输容量在1MB以内,但是根据不同版本、不同厂商,这个值会有区别。
423 0
|
Android开发
Activity、Window、View三者关系
目录介绍 01.Window,View,子Window 02.什么是Activity 03.什么是Window 04.什么是DecorView 05.什么是View 06.关系结构图 07.Window创建过程 08.
1008 0
|
容器
Fragment与Fragment相互切换之间的生命周期方法
最近一段时间忙于找工作,找到工作之后忙于项目上线,好久没有写过博客,现在感觉终于闲暇了,写一写这次项目中需要总结提炼的知识点,给自己留个印象吧,毕竟好记性不如烂笔头。
1575 0
|
XML Android开发 数据格式
Fragment与Activity之间的通信
前言 君子博学而日参省乎已,则知明而行无过矣。 要显示Fragment,必须将Fragment添加到Activity中。添加到Activity中有如下两种方式。
1181 0