一、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. android-The method findViewById(int) is undefined for the type ContactMainFragment报错

    @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view ...

  2. Server Tomcat v7.0 Server at localhost failed to start.临时解决办法

    错误名:Server Tomcat v7.0 Server at localhost failed to start. 解决办法:去掉下面这句话: (通常在代码开头部分,public class前) ...

  3. netsh端口转发

      使用多个虚拟机,将开发环境和工作沟通环境分开(即时通,办公系统都只能在windows下使用…),将开发环境的服务提供给外部访问时,需要在主机上通过代理配置数据转发. VirtualBox提供了端口 ...

  4. 完全变味的Windows Azure Marketplace中国版

    国际版的Microsoft Azure很早就发布Marketplace了,里面有非常丰富的(超过3000款)第三方应用.服务和虚拟机镜像可以购买.其定价模式也非常灵活,支持按需付费(pay as yo ...

  5. copy-paste component

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

  6. SQL变量、运算符、分支、循环语句

    变量: SQL语言也跟其他编程语言一样,拥有变量.分支.循环等控制语句. 在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量. 局部变量: 使用declare关键字给变量声明,语法非常 ...

  7. java.io.IOException: 您的主机中的软件中止了一个已建立的连接解决办法

    问题现象和http://hi.baidu.com/cara_cloud/item/193a3ee327546d395a2d64be描述的一样,就是在eclipse的console栏中一直显示java. ...

  8. 一些重要的mel命令

    一些重要的mel命令 查询多边形顶点 xform -q -worldSpace -t "pCylinderShape1.vtx[0]" 设置顶点坐标 xform -objectSp ...

  9. Java8 Lambda表达式和流操作如何让你的代码变慢5倍

    原文出处:ImportNew 有许许多多关于 Java 8 中流效率的讨论,但根据 Alex Zhitnitsky 的测试结果显示:坚持使用传统的 Java 编程风格——iterator 和 for- ...

  10. java类型转换

    //java类型转换public class Demo2 { public static void main(String[] args){ int num1 = 55; int num2 =77; ...