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总结相关推荐

  1. android 可折叠标题栏,ViewPager + Fragment + 折叠式标题栏异常

    我模仿别人的知乎日报,新闻列表页没问题,内容明细页(NewsDetail)用的是ViewPager+Fragment.可以左右滑动看左右的新闻的. 我的项目地址是链接描述 但是我在做顶部可折叠式标题栏 ...

  2. Android Tab大总结 Fragment+TabPageIndicator+ViewPager

    2019独角兽企业重金招聘Python工程师标准>>> 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24740 ...

  3. android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)

    之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的. 不过,ViewP ...

  4. 【Android 应用开发】 Fragment 详解

    作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragmen ...

  5. Android学习笔记之Fragment的两种使用方法

    一.第一种方法: (1)Fragment的第一种使用方法是使用fragment加载单独的布局文件:(也就是xml的方式实现) 结构如下: activity_main.xml主要是在一个线性布局中添加两 ...

  6. android 创建选项卡,Android用Fragment创建选项卡

    本文结合之前的动态创建fragment来进行一个实践,来实现用fragment创建一个选项卡 项目布局 xmlns:tools="http://schemas.android.com/too ...

  7. android 底部通知,Android Fragment实现底部通知栏

    Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应 ...

  8. Android框架攻击之Fragment注入

    为了适应越来越大的设备屏幕,Android在3.X后引入了Fragment概念,作用是可以在一个屏幕上同时显示多个Activity,以达到充分利用屏幕的目的.关于Fragment的使用说明,可以阅读& ...

  9. [Android] 使用Include布局+Fragment滑动切换屏幕

        前面的文章已经讲述了"随手拍"项目图像处理的技术部分,该篇文章主要是主界面的布局及屏幕滑动切换,并结合鸿洋大神的视频和郭神的第一行代码(强推两人Android博客),完成了 ...

最新文章

  1. 拼多多员工爆料:拼多多开启硬核模式!午休减半!每月工作300小时!千万别来拼多多!...
  2. Redis Manager 主要功能介绍
  3. WAVE SUMMIT平行论坛 :产教融合,人才共育
  4. android tools ignore,android 中tools:ignore=UselessParent这个属性的含义是什么?
  5. [FF-A]-02-Concepts
  6. 收下这12篇最新论文,炼丹不愁没灵感 | 本周值得读
  7. 【惊天】京东任命周伯文担任京东云与AI事业部负责人 全面负责AI、云计算、IoT三大技术领域!
  8. 欧洲杯推动夜间消费发展 便利蜂晚20时-凌晨2时服务人次创新高
  9. 台式计算机年限怎么看,电脑使用年限_电脑使用年限查询
  10. Android4.4 Input 输入上层分析
  11. java byte[]如何移动位置_《北京尚学堂学习》——java基础
  12. 数据分析小练手【5】 之 搜狗新闻(文本分析)
  13. PNG编解码算法详解
  14. c语言 圆周率10000位,圆周率(小数点后10000位,背死你)
  15. 加载R包unloadNamespace时,我该怎么办
  16. 手机屏幕弹幕纵向滚动,添加弹幕实时滚动html demo
  17. 点阵字python_Python点阵字玩转动态歌词
  18. Trajectory Forecasting:TrajNet++
  19. [数据分析与可视化] 数据绘图要点9-颜色的选择
  20. poi操作word模板(word2003,word2007)

热门文章

  1. 九 关系 Relations
  2. 解决Linux关机重启连不上网的异常
  3. 如何在Redis中查找大key
  4. 文章标题 CoderForces 298A: Snow Footprints(水)
  5. ASN1语法与BC库的ASN1 API 使用BC库自定义ASN1类型
  6. Arduino开发小项目—光控灯
  7. mysql实现序列自增_MySQL实现序列自增
  8. Go语言-Go interface 接口的最佳实践
  9. 【Kevin三连弹之三】Rust真的比C慢吗?进一步分析queen微测评
  10. AAAI2022国际顶会Workshop将会讨论些什么?