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(理论部分)
引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...
随机推荐
- my_atoi()
void my_atoi(const char* s){ int i=0,res=0; if(*s<='9' && *s>='0'){ //如果输入的一个字符是数字 for ...
- JAVA刷CSDN博客流量的思路
先来看看CSDN统计博客访问量的原理: 当客户端向服务器发起请求的时候,每个ip被统计一次,上图的三个客户端指的是三个不同的ip地址.并且在某段时间内,同以ip访问同一篇文章,只能算是一次访问量.同一 ...
- 分布式系统理论之Quorum机制
一,Quorum机制介绍 在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的.因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区.网络通信故障问 ...
- Remote Displayer for Android V1.2
VERSION LOG for Android Remote Displayer Features:The app allows you to see your Android device remo ...
- 校园导游系统(C++实现,VC6.0编译,使用EasyX图形库)
运行效果: 说明: 由于当年还不会使用多线程,所以很多获取用户点击的地方都是使用循环实现的...CPU占用率会比较高. 代码: //校园导游系统.cpp 1 #include <graphics ...
- 关于OATUH中的AUTHRAZITON CODE和TOKEN的关系,实际上就是这么回事
关于OATUH中的AUTHRAZITON CODE和TOKEN的关系,实际上就是这么回事 每回要拿AUTHRAZITON CODE换取TOKEN,然后才能正常通信, 为什么要多一步呢?直接给TOKEN ...
- 模拟placeholder支持ie8以下处理了密码框只读的问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python的高级特性10:无聊的@property
@property装饰器其实有点无聊,单独拿出来作为一个知识点其实没必要,尽管它可以将方法变成属性,让get和set方法更好用,但是,它破坏了python的简洁(不是代码的简洁而是指语法上). 下面来 ...
- JVM监测&工具[转]
通过工具及Java api来监测JVM的运行状态, 需要监测的数据:(内存使用情况 谁使用了内存 GC的状况) 内存使用情况--heap&PermGen @ 表示通过jmap –heap pi ...
- 在Java代码中使用pdfBox将PDF转换为图片
生成图片 // 生成图片 PDDocument pd = PDDocument.load(new File(filePath)); PDFRenderer pdfRenderer = new PDFR ...