一、Fragment生命周期:

  

二、动态添加Fragment的三步:

1、获得Fragment的管理者FragmentManager

FragmentManager fragmentManager = getFragmentManager();

2、开启事务:

FragmentTransaction transaction = fragmentManager.beginTransaction();

3、提交事务:

transaction.commit();

下面是四个Fragment的切换:

     public void onClick(View view) {
         //获得fragment的管理者
         android.app.FragmentManager fragmentManager = getFragmentManager();
         //开启事物
         FragmentTransaction transaction = fragmentManager.beginTransaction();
         switch (view.getId()){
             case R.id.btn_wx:{//点击类微信
                 transaction.replace(R.id.ll,new WxFragment());
             }break;
             case R.id.btn_contact:{//点击了联系人
                 transaction.replace(R.id.ll,new ContactFragment());
             }break;
             case R.id.btn_discover:{//点击了发现
                 transaction.replace(R.id.ll,new DiscoverFragment());
             }break;
             case R.id.btn_me:{//点击了me
                 transaction.replace(R.id.ll,new MeFragment());
             }break;
             default: break;
         }
         //最后一步,提交事物
         transaction.commit();
     }

以WxFragment为例:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //通过打气筒把一个布局转换成一个view对象
        View view = inflater.inflate(R.layout.fragment_wx,null);
        return view;
    }

三、Fragment之间的通信:

已Fragment1修改Fragment2的TextView的值为例:

MainActivity:

         android.app.FragmentManager fragmentManager = getFragmentManager();
         FragmentTransaction transaction = fragmentManager.beginTransaction();

         transaction.replace(R.id.ll1,new Fragment1(),"f1");
         transaction.replace(R.id.ll2,new Fragment2(),"f2");

         transaction.commit();  

Fragment1:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fragment1,null);
         view.findViewById(R.id.bnt).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 //修改TextView的值
                 Fragment2 f2 = (Fragment2)getActivity().getFragmentManager().findFragmentByTag("f2");
           //调Fragment2中的setText函数修改TextView的值 f2.setText("haha"); } }); return view; }

Fragment2:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fragment2,null);
         tv = (TextView) view.findViewById(R.id.tv);
         return view;
     }
     public void setText(String content){
         tv.setText(content);
     }

ps:通过Tag可以得到Fragment2的实例,然后去修改值就行了。

Android开发之Fragment的更多相关文章

  1. android开发之Fragment加载到一个Activity中

    Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Frag ...

  2. Android开发之Fragment的介绍、使用及生命周期

    Fragment官网介绍-http://developer.android.com/guide/components/fragments.html 郭大神的使用实例文章:http://blog.csd ...

  3. Android开发之Fragment传递參数的几种方法

    Fragment在Android3.0開始提供,而且在兼容包中也提供了Fragment特性的支持. Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自己定义Fragmen ...

  4. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

     今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...

  5. Android开发之Java集合类性能分析

    对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...

  6. Android开发之InstanceState详解

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  7. Android开发之Git配置

    Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...

  8. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  9. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

随机推荐

  1. Javascript parseFloat内部解析规则

    这是由小习发的一个问题引起的讨论,结束后大家各自加深了多parseFloat的理解. 如下 16进制数0x10使用parseFloat转成数字,结果为0.潜意识期望的结果是16. 有人说脑残,16进制 ...

  2. centos---无线上网的电脑所安装的虚拟机网络设置

    1.共享设置 找到本地的无线网卡,右键---属性---共享,设置如下 2.修改VMware Network Adapter VMnet1 选中VMware Network Adapter VMnet1 ...

  3. 移动端rem单位用法[转]

    标签: 1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单 ...

  4. windows下nodejs环境配置

    一.下载 去nodejs下载node.msi安装文件包,里面包含了node.js和npm: 双击node.msi就行了,选择安装路径和npm: 二.设置环境变量 [新版本都不需要设计环境变量了,软件会 ...

  5. 安装rpm包

    下载好一个rpm包怎样安装? [root@localhost ~]# ls anaconda-ks.cfg install.log install.log.syslog jboss-as-7.1.1- ...

  6. USACO Sorting a Three-Valued Sequence

    题目描述 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排成升 ...

  7. 02章《深入C#数据类型》项目经理评分

    一:创建MyOffices项目,创建UserInfo类,用来存储员工 工号,姓名,年龄,评价,年度得分 二:创建查看评分窗体(frmShow),添加定义员工数组,将员工数据绑定到frmShow窗体的L ...

  8. copy-paste component

    http://www.cnblogs.com/wantnon/p/4579008.html

  9. UNITY在VS中调试

    下载地址:https://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.Type=RootCategory&f%5B0 ...

  10. 第一天接触Orchard

    第一天接触Orchard 为什么要研究Orchard 呢? 楼主是因为要研究下最新的ASP.NET技术, Orchard 用的人多,历史也比较久,算是老牌了 再就是中文资料比较多,Orchard 有中 ...