android独特fragment,Android Fragment总结
Android Fragment小结
为何使用Fragment?
实现UI的灵活组建与拆分,与Activity配合可保持Activity的视图不变,转而操作Fragment,就像Activity的模块与组建一样。同时解决了
在平板上UI的适应性。
《Android编程权威指南》一书作者提出了AUF(即Always Use Fragment)原则----暂且相信他
Fragment 的生命周期依赖于Activity的生命周期,并且有自己独特的方法,不多赘述。
1.获取Fragment的视图(layout转成视图对象)
通过重写fragment的oncreatView()方法
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// TODO Auto-generated method stub
View v = inflater.inflate(R.layout.fragment, container, false);
return v;
}
第一个参数是生成视图的布局资源ID,第二个参数是视图的父视图,第三个参数告知布局生成器是否将生成的视图添加给父视图。
2.一个近乎通用的托管Fragment的类
public abstract class SingleFragmentActivity extends FragmentActivity {
protected abstract Fragment createFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_fragment);//获取Fragment管理者FragmentManager fm =getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if (fragment==null){
fragment= createFragment();
fm.beginTransaction()
.add(R.id.fragmentContainer,fragment)
.commit();
}
}
}3.Fragment与Fragment、Activity之间的通信(数据传递)
有两种方法:
第一种是通过Intent 的方法
①Fragment->Activity
通过Intent的putXXX方法把数据传到Activity
Intent i = new Intent(getActivity(),CrimePagerActivity.class);
i.putExtra(CrimeFragment.EXTRA_CRIME_ID, c.getId());
startActivity(i);②Activity->Fragment
在Fragment中通过getActivity()获得托管该Fragment的Activity的引用,然后通过getIntent().getXXX方法获得数据
UUID crimeId = (UUID)getActivity().getIntent().getSerializableExtra(EXTRA_CRIME_ID);
这种方法虽然方便,但是牺牲了Fragment的封装性,该Fragment不再是可复用的构建但愿,因为它总是需要某个具体的Activity托管者,这里推荐使用第二种方法。
第二种方法,使用Fragment 的argument
每个Fragment实例都可带一个Bundle对象,该Bundle包含Key-value 对,我们可以如同附加到extra到Activity的Intent中那样使用它们,要创建Fragment,首先需要创建Bundle对象。附加Bundle给Frament,需调用Fragment.setArgument(Bundle)方法。
Android常用的做法是,添加名为newInstance()的方法给Fragment。
public static CrimeFragment newInstance(UUID crimeId){
Bundle args = new Bundle();
args.putSerializable(EXTRA_CRIME_ID, crimeId);
CrimeFragment fragment = new CrimeFragment();
fragment.setArguments(args);
return fragment;
}
}Activity获取Fragment的数据
UUID crimeId = (UUID) getIntent()
.getSerializableExtra(CrimeFragment.EXTRA_CRIME_ID);
android独特fragment,Android Fragment总结相关推荐
- android 可折叠标题栏,ViewPager + Fragment + 折叠式标题栏异常
我模仿别人的知乎日报,新闻列表页没问题,内容明细页(NewsDetail)用的是ViewPager+Fragment.可以左右滑动看左右的新闻的. 我的项目地址是链接描述 但是我在做顶部可折叠式标题栏 ...
- Android Tab大总结 Fragment+TabPageIndicator+ViewPager
2019独角兽企业重金招聘Python工程师标准>>> 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24740 ...
- android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)
之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的. 不过,ViewP ...
- 【Android 应用开发】 Fragment 详解
作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragmen ...
- Android学习笔记之Fragment的两种使用方法
一.第一种方法: (1)Fragment的第一种使用方法是使用fragment加载单独的布局文件:(也就是xml的方式实现) 结构如下: activity_main.xml主要是在一个线性布局中添加两 ...
- android 创建选项卡,Android用Fragment创建选项卡
本文结合之前的动态创建fragment来进行一个实践,来实现用fragment创建一个选项卡 项目布局 xmlns:tools="http://schemas.android.com/too ...
- android 底部通知,Android Fragment实现底部通知栏
Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应 ...
- Android框架攻击之Fragment注入
为了适应越来越大的设备屏幕,Android在3.X后引入了Fragment概念,作用是可以在一个屏幕上同时显示多个Activity,以达到充分利用屏幕的目的.关于Fragment的使用说明,可以阅读& ...
- [Android] 使用Include布局+Fragment滑动切换屏幕
前面的文章已经讲述了"随手拍"项目图像处理的技术部分,该篇文章主要是主界面的布局及屏幕滑动切换,并结合鸿洋大神的视频和郭神的第一行代码(强推两人Android博客),完成了 ...
最新文章
- android alpha不起作用,API 28(P)的Android设计支持库不起作用
- Python之operator库
- java后期发展方向_2020年前3季度工程自卸车市场咋样?后期朝啥方向发展?
- 史上最详尽的NLP预处理模型汇总
- 60佳优秀的 Photoshop 网页制作教程【下篇】
- android 动画总结笔记 一
- uboot源码——主Makefile分析
- 一句话输出没有结束符的字符串
- 扭矩大好还是马力大好_汽车马力大好还是小好,马力越大汽车的动力性就越好?...
- Java用户修改头像接口
- 无线通信设备安装工程概预算编制_浙江正规设备安装工程安装-设计安装_天霖工程...
- mysql文章相似度计算_文章相似度计算
- C4D模型工具—连接点/边
- php分页函数怎么看样式,分页样式代码
- 阿里云服务器ECS上部署简单的SSM项目
- 生活记录:其实超度的是活着的人
- java 根据环境导包_java环境变量配置原理解析以及eclipse导入外包的方法
- [转][汇编] 汇编语言实现简易文本编辑器(光标移动、上卷和退格删除)
- 飞腾平台编译文件系统
- 如何把IP-GUARD发布到公网IP来管理全国分公司的终端