文章目录

  • 从Activity传到Fragment中
    • 通过setArguments()方法传值
    • 通过获取对象进行传值
  • 从Fragment传到Activity中
  • Fragment之间传值

从Activity传到Fragment中

通过setArguments()方法传值

这个方法需要先实例化一个Bundle对象作为载体进行传值

Activity

//实例化FragmentFragment1 f = new Fragment1();//实例化一个Bundle对象Bundle bundle = new Bundle();//存入数据到Bundle对象中bundle.putString("msg1", "这是由Activity发往Fragment的数据");//调用Fragment的setArguments方法,传入Bundle对象f.setArguments(bundle);//添加、替换显示的Fragment......

上面前四步可以简写为

Fragment1 f = new Fragment1().setArguments(new Bundle() .putString("msg1", "这是由Activity发往Fragment的数据"));

Fragment1

Bundle b = getArguments();String msg1 = b.getString("msg1");//已经获取到值......

通过获取对象进行传值

Activity

public String sendMsg(){return "这是通过一个普通方法传递过去的消息";

在Fragment1的onAttach方法中

String msg = ((Activity的类型)context).sendMsg();//已经获取到值......

从Fragment传到Activity中

  1. Fragment中定义一个接口,在该接口中声明一个用于传递数据的方法
  2. Activity实现该接口,然后重写回调方法,获取传入的值,然后做处理
  3. 在自定义Fragment中,声明一个回调接口的引用
  4. onAttach方法中,为第三步的引用赋值
  5. 用引用调用传递数据的方法

Fragment1

//1.定义接口public interface MyListener{public void sendMsg(String msg);}//3.声明一个引用private MyListener ml;//4.为引用赋值public void onAttach(Context context) {super.onAttach(context);ml = (MyListener)getActivity();//传递消息方法,不一定在onAttach中实现ml.sendMsg("消息");}

Activity

//2.实现Fragment1的接口public void sendMsg(String msg) {Log.e("TAG", "Fragment传回的数据:" + msg);}

Fragment之间传值

Fragment之间的传值前提是它们之间有交互。在满足前条件提下想实现传值的话只需要实例化对应的Fragment对象,通过实例化对象调用对应的set方法就可以实现传值

更多相关文章

  1. Dagger2 基础入门与使用
  2. Android的Activity的启动流程分析
  3. Android(安卓)studio 使用 ImageView 加载 gif 文件
  4. Settings设置页面的Preference使用方法
  5. Android面试题整理(百度)
  6. Android(安卓)源码解析之Adapter和AdapterView与适配器模式
  7. 关于SearchView的一些小细节
  8. AsyncHttpClient的使用
  9. Android(安卓)锁屏和黑屏的广播消息

随机推荐

  1. 创建Android虚拟设备(AVD)
  2. Android SDK Manager
  3. Android横竖屏布局总结
  4. 关于AVD启动失败的问题--找不到文件篇
  5. Android 4.4(KitKat)窗口管理子系统 - 体
  6. Android(安卓)禁止EditView弹出软键盘问
  7. Android程序测试(2)——Activity测试
  8. 如何在Android中使用离线的谷歌地图Googl
  9. 《Android经验分享》周刊第10期
  10. Android 显示系统键盘搜索按键,实现搜索功