Fragment 基础
FragmentActivity与Activity区别
fragment是3.0以后的东西,为了在低版本中使用fragment就要用到android-support-v4.jar兼容包,而fragmentActivity就是这个兼容包里面的,它提供了操作fragment的一些方法,其功能跟3.0及以后的版本的Activity的功能一样。 下面是API中的原话:FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11. If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.具体区别1、FragmentActivity继承自Activity,用来解决android3.0之前没有fragment的问题,所以在3.0前使用Fragment时需要导入support包,同时让Activity继承FragmentActivity,这样就能在activity中使用fragment了。
2、在3.0之后你直接继承自Activity就可以使用fragment。
3、两者获得FragmentManager的方式也不同,3.0之前使用FragmentActivity时:getSupportFragmentManager(),3.0以后使用Activity时:getFragmentManager()
4、一定要保证你的Activity中和你的Fragment中导的包是一致的!小细节:Fragment嵌套Fragment时,里面的Fragment要用getChildFragmentManager获取到的fm比如:Fragment里放ViewPager,ViewPager里面又是fragment时
Fragment与Activity通信
因为所有的Fragment都是依附于Activity的,所以通信起来并不复杂,大概归纳为:
- a、如果你Activity中包含自己管理的Fragment的引用,可以通过此引用直接访问Fragment所有的public方法
- b、如果Activity中未保存任何Fragment的引用,那么没关系,每个Fragment都有一个唯一的TAG或者ID,可以通过getFragmentManager.findFragmentByTag()或者findFragmentById()获得任何Fragment实例,然后进行操作。
- c、在Fragment中可以通过getActivity()得到当前绑定的Activity的实例,然后进行操作。
注:如果在Fragment中需要Context,可以通过调用getActivity(),如果该Context需要在Activity被销毁后还存在,则使用getActivity().getApplicationContext()。Fragment与Activity通信的原则:因为要考虑Fragment的重复使用,所以必须降低Fragment与Activity的耦合,而且Fragment更不应该直接操作别的Fragment,毕竟Fragment操作应该由它的管理者Activity来决定。Activity担任的是Fragment间类似总线一样的角色,应当由它决定Fragment如何操作。另外虽然Fragment不能响应Intent打开,但是Activity可以,Activity可以接收Intent,然后根据参数判断显示哪个Fragment。
静态fragment案例-Activity
注意:1、要通过android:name属性指定所引用的fragment的全类名2、必须给fragment设置id,即使完全用不到
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><fragmentandroid:id="@+id/fragment1"【必须设置id,即使完全用不到】android:name="com.bqt.fragment.TitleFragment"【引用的哪个就写哪个的全类名】android:layout_width="fill_parent"android:layout_height="45dp" /><fragmentandroid:id="@+id/fragment2"android:name="com.bqt.fragment.ContentFragment"android:layout_width="fill_parent"android:layout_height="fill_parent" /></LinearLayout>
fragment
public class ContentFragment extends Fragment implements OnClickListener {private TextView tv;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_content, container, false);tv = (TextView) view.findViewById(R.id.tv);tv.setOnClickListener(this);return view;}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.tv:tv.append("\n" + new SimpleDateFormat("yyyy.MM.dd HH-mm-ss").format(new Date()));break;}}}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/tv"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:text="把Fragment当做一个view使用,一切关于此界面的代码全部放在Fragment中"android:textSize="20sp" /></LinearLayout>
public class TitleFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_title, container, false);}}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="45dp"android:background="#c000" ><TextViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:text="微信"android:textColor="#fff"android:textSize="20sp"android:textStyle="bold" /></RelativeLayout>
Fragment 基础的更多相关文章
- 札记:Fragment基础
Fragment概述 在Fragment出现之前,Activity是app中界面的基本组成单位,值得一提的是,作为四大组件之一,它是需要"注册"的.组件的特性使得一个Activit ...
- Fragment基础----信息传递
如何通过activity来访问fragment的信息呢,我们可以通过一个实例来了解. 使用两个Fragment和一个activity管理 效果图: 第一个fragment来表示输入框 第二个fragm ...
- Fragment基础----生命周期
Fragment生命周期和Activity对比 注意:在一个app的运行期间,前台的activity有时可能会被其他的视图组件打断,然后进入pause状态. 比如打开一个半透膜的activity (比 ...
- Fragment基础----创建
1,Fragment的目的及应用场景 fragment 是3.0后引入的类,其字面翻译为“碎片”. 目的是将activity划分成许多单元再进行组合,可以根据不同分辨率屏幕,在不同状态下,灵活创建优化 ...
- android之Fragment基础详解(一)
一.Fragment的设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕比手机的大得多,有 ...
- Fragment基础讲解
//新建一个碎片public class LeftFragment extends Fragment { @Override public View onCreateView(LayoutInflat ...
- Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Fragment基础及使用
同一个app内的界面切换 用Fragment比较合适,因为Activity比较重量级 Fragment 轻量级,切换灵活 --------------------------------------- ...
- Fragment基础操作
Fragment和Activity类似,同样是具备UI的属性:也就是都能用于规划UI布局... Building a Dynamic UI with Fragments --> Fragment ...
随机推荐
- 【USACO 1.4.1】铺放矩形块
[描述] 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 所有4个矩形块的边都与封闭矩形的边相平行,图1示出了铺放 ...
- int, NSInteger, NSUInteger, NSNumber的区别
新手在接触iOS或者Mac开发的时候,看到int和NSInteger,一般不清楚应该用哪个比较合适.我们先来查看下NSInteger的定义 #if __LP64__ || (TARGET_OS_EMB ...
- js 遇到 Permission denied to access property ***
在开发过程 子页面刷新父页面时,中遇到的 Permission denied to access property *** 问题,处理如下: 这是一个跨域的问题,其实很简单 就是子页面所在域名不在父页 ...
- HTML cellpadding与cellspacing属性
单元格(cell) -- 表格的内容 单元格边距(表格填充)(cellpadding) -- 代表单元格外面的一个距离,用于隔开单元格与单元格空间 单元格间距(表格间距)(cellspacing) - ...
- jQuery判断浏览器
在jQuery1.9版本之前,jQuery 提供了 browser 标记 <script type="text/javascript" src="http://aj ...
- 修改PHP的默认时区
每个地区都有自己的本地时间,在网上及无线电通信中,时间的转换问题显得格外突出.整个地球分为24个时区,每个时区都有自己的本地时间.在国际无线电或网络通信场合,为了统一起见,使用一个统一的时间,成为通用 ...
- PS抠图神器:KNOCKOUT 2.0
从优设上转载~~太好用了,保存下来以备不时之需. 本人亲身实践~~先看使用成果~~哈哈~~ 原版图 : 抠过的图: 主要看飘逸的发丝~~~而且全程操作不超过5分钟!! 下载地址: http://vdi ...
- php回调函数callback函数实例
<?php // 将文本中的年份增加一年. $text = "April fools day is 04/01/2002\n"; $text.= "Last chr ...
- js 冒泡事件的处理
onMouseOver 和 onMouseOut事件冒泡 当事件在某一DOM元素被触发时,例如用户在某个节点上点击鼠标,事件将跟随着该节点继承的各个父节点冒泡穿过整个DOM的节点层次,直到它遇到依附有 ...
- 【模拟】XMU 1062 山东煎饼
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1062 题目大意: 已知金钱,和各面额钞票张数,问最少可以换成几张. 题目思路: [模拟 ...