android中fragment的使用及与activity之间的通信

一.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方法实现互相传值

Flagment使用.zip

时间: 2024-07-31 16:46:31

android中fragment的使用及与activity之间的通信的相关文章

Fragment的生命周期和Activity之间的通信以及使用

Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragment,选择Blank,在Activity布局中直接加fragment,name属性直接指向之前建立的Fragment,这就添加上了Fragment,这种较为简单. 动态: 我们要做的是在Activity中添加一个Fragment,Fragment中有两个按钮,当按下按钮时分别切换不同的Fragmen

android中fragment和activity之间相互通信

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信.下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法. 1. activity 向fragment发出通信,就这么写: private OnMainListener mainListener; // 绑定接口 @Override public void onAttachFragment(Fragmentfragment) { try { mainListener =

Android中Fragment与Activity之间的交互(两种实现方式)

(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragment与

Android——Fragment和Activity之间的通信+Frangment生命周期

Android--Fragment和Activity之间的通信+Frangment生命周期 Fr'agment和Activity之间的通信 1.在Fragment中声明一个接口. 2.在Activity中实现在Fargment中声明的接口. 3.在Fragment中声明一个接口对象. 4.在Frangment的生命周期Onattach方法中判断当前Activity是否实现了此Fragment中声明的接口.如果已实现,就把当前Activity转换成接口对象. 5.调用Activity中实现的方法=

Android中Fragment和ViewPager那点事儿

在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragment与Activity之间的交互(两种实现方式)>中我们介绍了ViewPager以及Fragment各自的使用场景以及不同的实现方式. 那如果将他们两结合起来,会不会擦出点火花呢,答案是肯定的.之前在介绍ViewPager时,我们实现了多个ImageView的切换,并配合更新导航原点的状态.那我们现在

Android中两个Activity之间简单通信

在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信息的发起者为Test,接收者为Target,代码如下: Test类: 1 package com.example.testsend; 2 3 import android.content.Intent; 4 import android.support.v7.app.AppCompatActivit

Android中BroadCast与Activity之间的通信

在看本文之前,如果你对于Android的广播机制不是很了解,建议先行阅读我转载的一篇博文:图解 Android 广播机制. 由于本案例比较简单,故直接在此贴出代码,不做过多的阐述. 先上效果截图: MainActivity的代码如下: package com.gc.testbroadcasedemo; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Cont

Android中Fragment和Activity之间的互操作代码例子

摘要 本文介绍了Android中一个Activity中有多个Fragment的情况下,Fragment之间如何通过Activity进行互操作. 源代码 源代码地址为:http://download.csdn.net/detail/logicteamleader/8931199 源代码使用ADT编写,ADT版本为2014,Android版本为android-22. 技术要点 1.在Activity中的多个Fragment之间要互操作,一定要通过此Activity,不能直接通信: 2.在Activi

android中fragment与activity之间通信原理以及例子

参考文章 http://blog.csdn.net/guozh/article/details/25327685#comments Activity和fragment通信方式一般有3种方法 1.在fragment中定义接口, Activity去实现接口--->查看上面的参考文章 2.使用广播机制 3.使用EventBus 这3种方式 推荐使用EventBus 下面介绍第2种方式广播通信机制: 首先MainActivity中引入一个fragment, activity的布局很简单,里面只有一个 f