Android开发之Fragment
一、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的更多相关文章
- android开发之Fragment加载到一个Activity中
Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Frag ...
- Android开发之Fragment的介绍、使用及生命周期
Fragment官网介绍-http://developer.android.com/guide/components/fragments.html 郭大神的使用实例文章:http://blog.csd ...
- Android开发之Fragment传递參数的几种方法
Fragment在Android3.0開始提供,而且在兼容包中也提供了Fragment特性的支持. Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自己定义Fragmen ...
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...
- Android开发之Java集合类性能分析
对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...
- Android开发之InstanceState详解
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- Android开发之Git配置
Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...
- 【Android UI】Android开发之View的几种布局方式及实践
引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...
- Android开发之旅: Intents和Intent Filters(理论部分)
引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...
随机推荐
- android-The method findViewById(int) is undefined for the type ContactMainFragment报错
@Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view ...
- Server Tomcat v7.0 Server at localhost failed to start.临时解决办法
错误名:Server Tomcat v7.0 Server at localhost failed to start. 解决办法:去掉下面这句话: (通常在代码开头部分,public class前) ...
- netsh端口转发
使用多个虚拟机,将开发环境和工作沟通环境分开(即时通,办公系统都只能在windows下使用…),将开发环境的服务提供给外部访问时,需要在主机上通过代理配置数据转发. VirtualBox提供了端口 ...
- 完全变味的Windows Azure Marketplace中国版
国际版的Microsoft Azure很早就发布Marketplace了,里面有非常丰富的(超过3000款)第三方应用.服务和虚拟机镜像可以购买.其定价模式也非常灵活,支持按需付费(pay as yo ...
- copy-paste component
http://www.cnblogs.com/wantnon/p/4579008.html
- SQL变量、运算符、分支、循环语句
变量: SQL语言也跟其他编程语言一样,拥有变量.分支.循环等控制语句. 在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量. 局部变量: 使用declare关键字给变量声明,语法非常 ...
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接解决办法
问题现象和http://hi.baidu.com/cara_cloud/item/193a3ee327546d395a2d64be描述的一样,就是在eclipse的console栏中一直显示java. ...
- 一些重要的mel命令
一些重要的mel命令 查询多边形顶点 xform -q -worldSpace -t "pCylinderShape1.vtx[0]" 设置顶点坐标 xform -objectSp ...
- Java8 Lambda表达式和流操作如何让你的代码变慢5倍
原文出处:ImportNew 有许许多多关于 Java 8 中流效率的讨论,但根据 Alex Zhitnitsky 的测试结果显示:坚持使用传统的 Java 编程风格——iterator 和 for- ...
- java类型转换
//java类型转换public class Demo2 { public static void main(String[] args){ int num1 = 55; int num2 =77; ...