博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中fragment的使用及与activity之间的通信
阅读量:5213 次
发布时间:2019-06-14

本文共 2486 字,大约阅读时间需要 8 分钟。

一.fragment的生命周期,具体方法什么时候调用就不说了。

二 在activity中使用fragment和通信有两种常见的方式,

1.静态的方式

  (1)定义一个类继承Fragment,如 MyFragment,这里复写onCreateView()方法和onAttach()方法

  (2)onCreateView()加载一些布局对象以及设置View对象,并返回一个View对象,onAttach()通信的时候用到

  (3)在activity的layout的布局文件中引用Fragment继承类(注意设置name属性为MyFragment的全包名,另外设置id或者tag其中一种数据即可)

以上就可以在activity使用Fragment了,如果要互相通信,接着下面(包含上面 1 2 3步骤)

    (4.1)activity向Fragment发送数据

  (4.2)在MyFragment中定义私有成员变量,并实现get和set方法用来接收数据,直接上代码

  FragmentManager fragmentManager = getFragmentManager();

  Fragment findFragmentById = fragmentManager.findFragmentById(R.id.fragment);
  MyFragment myFragment= (MyFragment) findFragmentById;// 找到fragment
  myFragment.setAa("avtivity传的值");

  (4.3) 可以在MyFragment 通过getAa()获取到数据了

  (5.1) Fragmenty向activit发送数据

  (5.2)通过成员变量

  (5.4)activity实现MyInterface 接口,就可以通过接口中的方法参数获得传进来的值

2动态的方式

  (1)定义一个类继承Fragment,如 MyFragment,这里复写onCreateView()方法和onAttach()方法

  (2)在activity中动态加载Fragment    

  MyFragment fragment2 = new MyFragment();

  FragmentManager fragmentManager = getFragmentManager();
  FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
  beginTransaction.add(R.id.ll_load_fragment, fragment2);//将fragment2 添加到id为ll_load_fragment的布局中
  beginTransaction.commit();

  (3.1)activity向Fragment传值

  MyFragment fragment = new MyFragment();

  FragmentManager fragmentManager = getFragmentManager();
  FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
  Bundle bundle = new Bundle();
  String value = "activity传的值";
  bundle.putString("name", value);
  fragment.setArguments(bundle);// 将bundle数据加到Fragment中
  beginTransaction.add(R.id.ll_load_fragment, fragment, "fragment");
  beginTransaction.commit();

  (3.2)在MyFragment 中通过getArguments().get(key)获取值

  (4.1)Fragment向activity传值 

   在MyFragment 中定义一个接口 

    private MyInterface myInterface;

    public interface MyInterface{

               public void sendMsg(Object object);

    }

  (4.2)通过onAttach(Activity activity)方法将activity转为myInterface  

  public void onAttach(Activity activity) {

    myInterface=(MyInterface) activity;
    super.onAttach(activity);
  }

  利用接口实现Fragment与Activity的信息传递.

总结一下Fragment与Activity之间交换数据的方式:

动态

 * 1 Activity向Fragment传递数据
   fragment.setArguments(bundle)
 * 2 Fragment向Activity传递数据
 在Fragment内部定义一个回调接口.让包含该Fragment的
 Activity实现该接口.这样Fragment就可调用该回调方法
 将数据传给Activity

静态

 * 1 Activity向Fragment传递数据
  直接调用Fragment继承类的set方法
 * 2 Fragment向Activity传递数据
 直接调用Fragment继承类的get方法

 就是通过Fragment继承类成员变量的get和set方法实现互相传值

转载于:https://www.cnblogs.com/fulai/p/4389696.html

你可能感兴趣的文章
安卓开发中遇到的小问题
查看>>
ARTS打卡第3周
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
svn客户端清空账号信息的两种方法
查看>>
springboot添加servlet的两种方法
查看>>
java的Array和List相互转换
查看>>
java的byte[]与String相互转换
查看>>
【转】查看电脑显卡型号及显卡性能
查看>>
layui父页面执行子页面方法
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>
在windows上安装ubuntu双系统
查看>>
JavaScript AJAX原生写法
查看>>