学习
实践
活动
专区
工具
TVP
写文章

Fragment间通信传递数据 Communicating with Other Fragments

需求: 一个Activity中显示两个Fragment,想要在FragmentA中点击某个按钮时,切换到FragmentB,同时把用户输入的数据传递到B中。 思路: Fragment的显示与否决定权在Activity里,想要传递数据就得通过这个“媒婆”,两个Fragment不应该直接通信。 方法:(其实这里就是一个回调的概念。) 1。 先在FragmentA中定义一个接口,例如: /** * 注册成功后回调,用于传递数据至登录 */ public interface OnRegisterSuccessListener 在实现回调方法里将A传递过来的数据用Bundle传递到FragmentB中: @Override public void onRegisterSuccess(String phoneNumber 这样就实现了2个Fragemnt间的数据通信。 学习地址:Communicating with Other Fragments

14410
  • 广告
    关闭

    新年·上云精选

    热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android中Activity和Fragment传递数据的两种方式

    中的onCreatView方法中,通过getArgments()方法,获取到bundle对象,然后通过getString的key值拿到我们传递过来的值。 2、第二种方式,是在宿主Activity中定义方法,将要传递的值传递Fragment中,在Fragment中的onAttach方法中,获取到这个值。 super.onAttach(activity); titles = ((MainActivity) activity).getTitles(); } //通过强转成宿主activity,就可以获取到传递过来的数据 3、下面在扩展一下创建Fragment传递数值 如果我们不需要传递数值,那就直接可以在宿主activity中,跟平常一样创建fragment,但是如果我们需要传递数据的话,可以使用newInstance (数据)方法来传递,这个方法是自己定义的,但是是定义在Fragment中的一个静态方法。

    2.3K10

    数据(事件)传递

    在平时的开发中我们都会遇到很多数据传递的例子,在前面的文章中我们接触队夺得就是构造方法属性的传递,但是flutter中并不是只有这一种传递的方法,今天我们就来看看Flutter中常用的数据传递方式 1. 构造方法属性传递 在前面的文章中我们多次使用到自定义Widget并传入相应的参数,这就是最简单的数据传递方法,上层通过下层Widget的构造方法将值传递给下层widget。 通过它,我们可以高效地将数据在 Widget 树中进行跨层传递。 4.EventBus 在上面的文章中我们具体了解了InheritedWidget从上往下的数据传递,和Notification从下往上的数据传递,虽然都可以实现数据跨多层传递的效果,但是他们都必须依赖于 小结 使用构造方法可以传递数据,但是多层传递比较麻烦 InheritedWidget可以沿着Wdiget树自上往下传递数据,尽量放在子Widget上一层 Notification可以沿着Widget自下往上传递数据

    24020

    activity嵌套fragmentfragment内嵌fragment之间传值切换fragment

    至于fragment的用法,fragment+viewpager的滑动切换代码请参考博文 Android基础:翻页控件Viewpager的使用方法,viewpager+fragment混合使用 fragment 与Activity 当在使用activity嵌套fragmentfragment再嵌套子fragment时,相当于有两层fragment,假设最外层为第一层,其中一个Fragment为ParentfragmentA ,该ParentFragmentA中又嵌套了三个fragment,也就是说第二层为ChildFragment1,ChildFragment2,ChildFragment3,如果想在其中一个子fragment 中的控件点击切换到同一层的另一个子fragment 如图,在第二层fragment中,child1fragment中有两个控件viewI和viewII,点击viewI可以切换到同一层的fragment 是另一个fragment的子fragment,则获取到的是父fragment的manager getChildFragmentManager方法:获取到外层fragment的子fragment的manager

    21111

    Fragment

    区别 二、Fragment的生命周期 三、Fragment的通信 四、Fragment的replace、add、remove 五、Fragment的管理器FragmentManager 一、Fragment 为何被称为第5大组件 1、为何称为第5组件 1)、fragment具有生命周期 2)、fragment比activity更节省内存,ui的切换效果也更加的舒适; 3)、但是fragment必须依附于 三、Fragment的通信 四、Fragment的replace、add、remove 1、add()是将Fragment实例添加到activity的Fragment队列的最上层 2、remove( )是将Fragment实例从到activity的Fragment队列中删除 3、replace:内部线remove(实例会被回收掉)然后再add,会始终保持fragment栈中只有一个fragment 因为,detach不会回收fragment,但是会回收fragment中的view。atach会将fragment中的view重新创建。既不剩内存,也不提高性能。

    12720

    # 使用InheritedWidget传递数据

    # 使用InheritedWidget传递数据 除了StatefulWidget、StatelessWidget之外flutter还提供了另外一个用的Widget组件即InheritedWidget。 # 我们来看一下数据是如何从父widget传递到子widget的 下面我们定义一个嵌套三层的数据传递例子: class DataTransferAWidget extends StatelessWidget (好想法,我们试一下) # 使用static代替构造函数传递数据 typedef ChildWidgetBuilder =DataTransferCWidget Function(int); class 上面例子我们定义了一个无状态的TestAWidget来演示如果获取InheritedWidget要向子传递数据,下面我们通过一个有状态的控件来展示在获取数据的同时响应didChangeDependencie InheritedWidget是为了向后代传递数据,如果InheritedWidget发生了嵌套呢?

    48820

    【Android基础】Fragment 详解之Fragment介绍

    Fragment可以看作是嵌套的Activity,类似ActivityGroup,但是开销肯定没有ActivityGroup那么大,每一个Fragment管理着一个View,Fragment彼此之间相互独立 然后当Activty进入运行状态onResume后,你可以独立的管理每一个Fragment,可以add一个Fragment,也可以remove一个Fragment。 在你执行一个Fragment事务的时候(创建并且显示出来),你可以把这个Fragment放到Fragment回退栈中,这个回退栈记录了所有你执行过的Fragment事务,用户在点击返回键的时候可以从Fragment Fragment的生命周期: 如果你很清楚Activity的生命周期那么Fragment的生命周期就很容易理解,在Fragment中有很多类似Activity生命周期函数的回调方法,这些方法由Android onCreateView(): 当Fragment需要第一次绘制用户界面的时候系统调用这个函数完成UI的绘制,你必须在这个函数返回一个View,这个View是Fragment的根View,如果你不想Fragment

    67780

    再谈Fragment

    Fragment 就是一个 Activity 布局的一部分,可以把 Activity 的一部分布局抽离出来到 Fragment 中,并且 Fragment 也可以执行逻辑。 如果用 Fragment 就灵活多了,Activity 只需要根据导航显示对应的 Fragment 就可以了。 如果别的地方需要某一个模块,直接拿出对应的 Fragment 就可以了。 Fragment 相关的三个类 Fragment 具体的 Fragment FragmentManager 是管理 Fragment 的 FragmentTransaction 通过事务来进行添加 Fragment 、隐藏、移除 等操作 Fragment 动作,事务保证了原子性 主要方法 transaction.add() 向 Activity 中添加 Fragment,只是添加 Fragment,不影响之前 Fragment " /> 在代码中获取的这个 Fragment 通过 Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment

    37420

    Fragment初识

    TextView) getActivity().findViewById(R.id.id_tv_actUI); textView.setText("FFFF"); } } ---- 数据传递 ①Activit传递数据Fragment: 在Activity中创建Bundle数据包,调用Fragment实例的setArguments(bundle) 从而将Bundle数据包传给Fragment 中接收解析数据 // 接收Activity传递过来的数据 Bundle bundle = getArguments(); Toast.makeText(getActivity ---- ②Fragment传递数据给Activity: 在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口, Fragment就可以通过回调接口传数据了 定义一个接口,接口中定义抽象方法,你要传什么类型的数据参数就设置为什么类型; ->接着还有写一个调用接口中的抽象方法,把要传递数据传过去 ->再接着就是Activity了,调用Fragment

    19220

    你真的会用Fragment了么?-Fragment解析

    ()的方法为Fragment提供数据,然后再Fragment的onAttach()方法中getArguments()获得一个Bundle对象。 Fragment使用 Fragment使用分为两种:静态和动态 静态使用Fragment 所谓静态使用指的就是将自定义的Fragment写到xml布局文件中,利用<fragment></fragment replace显示的话会调用Fragment的生命周期,也就是说它会销毁视图,重新加载,这种方式的话如果你的Fragment里面有大量的数据或者说很多视图结构的话不推荐使用这种,会增大你的内存消耗。 onHiddenChanged的回调时机,Fragment切换时候有可能会刷新数据,如果你的展示方式为hide、show的方式那么你就需要用到onHiddenChanged()方法了,但是不推荐在其中做繁重的业务逻辑 则不再重新去add这个fragment,而是通过Tag从前保存的数据中直接去读取,看一下代码: public void onCreate(Bundle savedInstanceState) {

    1.1K10

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 云数据库 MySQL

      云数据库 MySQL

      腾讯云数据库MySQL是一种高性能、高可靠、高安全、可灵活伸缩的数据库托管服务,其不仅经济实惠,而且提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券