Fragment与Activity之间传递数据

给静态注册的Fragment传递数据

  1. 定义MyFragment的布局文件,例如myfragment.xml
  2. 定义Myfragment extends Fragment,设置一个String 属性 data用于接受数据,并设置其setter和getter方法
  3. 重写 Fragment 的OnCreate()方法,View view= inflate.inflate(R.layout.myfragment,container,false);
  4. 需要注意的是:要实例化myfragment布局中的控件,需要使用 view.findViewById();
    1. findViewById()-用于实例化布局文件中的Widget,如Button,TextView等
    2. infate.inflate()-用于实例化一个布局文件
  5. 在 MainActivity中引入myfragment布局:标签,注意id和name属性
  6. 给 MainActivity中的一个Button添加监听器,在OnClick()方法中添加逻辑
    1. 目的 :Fragment发送数据
    2. 获得布局管理器 FragmentManager manager= getFragmentManager();
    3. 通过布局管理器找到要接收数据的MyFragment,并创建其实例对象myFragment :manager.findFragmentById()
    4. 通过 MyFragment中的setter向data传递数据
  7. 在MyFragment中接受数据 在OnCreateView()中直接使用getter方法即可获得数据
    1. Toast验证即可

给动态注册的Fragment传递数据

  1. 主要部分 MainActivity中的一个Button添加监听器,在OnClick()方法中添加逻辑
  2. 实例化要接受数据的要接收数据的MyFragment,并创建其实例对象myFragment
  3. 通过Bundle绑定数据 Bundle bundle =new Bundle(); bundle.putString(key,value);
  4. 通过 Fragment管理器 设置数据
    获过Fragment管理器 FragmentManager manager =getFragmentManager();
    并开启事务获得事务对象 :Transcation transcation=manager.beginTranscation();
  5. 通过事务动态添加Fragment:transtation.add(将myFragment添加到的布局文件的id,MyFragment实例,”myFragment”);
  6. 注意 这里是布局文件的id,即通过R.id.而不是通过R.layout.因此需要在这边给main_activity.xml的根元素如LinearLayout添加android:id
  7. 此外 xml布局文件的命名过程中不允许有空格,否则会导致R.java文件生成失败
  8. 最后提交事务 transcation.commit();
  9. 在MyFragment中获得数据
  10. 获得与MyFragment绑定的Activity:getActivity()
  11. 通过 Toast显示数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值