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

目录
相关文章
|
4月前
Flutter StatefulWidget传递数据,多级控件传递数据
Flutter StatefulWidget传递数据,多级控件传递数据 在Flutter中,StatefulWidget可以通过构造函数将数据传递给其子控件,这种方式适用于一些简单的场景。但是,当存在多级嵌套控件时,将数据从祖先传递到后代可能会变得困难。在这种情况下,可以使用Flutter提供的InheritedWidget类来传递数据。
|
Java API Kotlin
教你用更好的方式在Activity或Fragment之间传递以及返回数据
教你用更好的方式在Activity或Fragment之间传递以及返回数据
261 0
教你用更好的方式在Activity或Fragment之间传递以及返回数据
|
设计模式 缓存 前端开发
理清Activity、View及Window之间关系
理清Activity、View及Window之间关系
|
JavaScript
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
105 0
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
|
JSON Java 数据格式
Activity之间使用Intent传递大量数据带来问题
Intent在传递数据时是有大小限制的,这里官方并未详细说明,不过通过实验的方法可以测出数据应该被限制在1MB之(1024KB),采用的是传递某产品详情,发现当数据大小超过1024的时候,程序就会出现闪退、停止运行等异常(不同的手机反应不同),因此可以判断Intent的传输容量在1MB以内,但是根据不同版本、不同厂商,这个值会有区别。
341 0
|
容器
Fragment与Fragment相互切换之间的生命周期方法
最近一段时间忙于找工作,找到工作之后忙于项目上线,好久没有写过博客,现在感觉终于闲暇了,写一写这次项目中需要总结提炼的知识点,给自己留个印象吧,毕竟好记性不如烂笔头。
1532 0
|
XML Android开发 数据格式
Fragment与Activity之间的通信
前言 君子博学而日参省乎已,则知明而行无过矣。 要显示Fragment,必须将Fragment添加到Activity中。添加到Activity中有如下两种方式。
1135 0
Activity和Fragment之间解耦
看鸿洋博客:http://blog.csdn.net/lmj623565791/article/details/42628537,整理下一些关键点 public class ContentFragment extends Fragment { private String mArgume...
775 0