给静态注册的Fragment传递数据
- 定义MyFragment的布局文件,例如myfragment.xml
- 定义Myfragment extends Fragment,设置一个String 属性 data用于接受数据,并设置其setter和getter方法
- 重写 Fragment 的OnCreate()方法,View view= inflate.inflate(R.layout.myfragment,container,false);
- 需要注意的是:要实例化myfragment布局中的控件,需要使用 view.findViewById();
- findViewById()-用于实例化布局文件中的Widget,如Button,TextView等
- infate.inflate()-用于实例化一个布局文件
- 在 MainActivity中引入myfragment布局:标签,注意id和name属性
- 给 MainActivity中的一个Button添加监听器,在OnClick()方法中添加逻辑
- 目的 :Fragment发送数据
- 获得布局管理器 FragmentManager manager= getFragmentManager();
- 通过布局管理器找到要接收数据的MyFragment,并创建其实例对象myFragment :manager.findFragmentById()
- 通过 MyFragment中的setter向data传递数据
- 在MyFragment中接受数据 在OnCreateView()中直接使用getter方法即可获得数据
- Toast验证即可
给动态注册的Fragment传递数据
- 主要部分 MainActivity中的一个Button添加监听器,在OnClick()方法中添加逻辑
- 实例化要接受数据的要接收数据的MyFragment,并创建其实例对象myFragment
- 通过Bundle绑定数据 Bundle bundle =new Bundle(); bundle.putString(key,value);
- 通过 Fragment管理器 设置数据
获过Fragment管理器 FragmentManager manager =getFragmentManager();
并开启事务获得事务对象 :Transcation transcation=manager.beginTranscation(); - 通过事务动态添加Fragment:transtation.add(将myFragment添加到的布局文件的id,MyFragment实例,”myFragment”);
- 注意 这里是布局文件的id,即通过R.id.而不是通过R.layout.因此需要在这边给main_activity.xml的根元素如LinearLayout添加android:id
- 此外 xml布局文件的命名过程中不允许有空格,否则会导致R.java文件生成失败
- 最后提交事务 transcation.commit();
- 在MyFragment中获得数据
- 获得与MyFragment绑定的Activity:getActivity()
- 通过 Toast显示数据