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 ...
随机推荐
- adb server is out of date. killing... 解决方案
忘了原文从哪来的了,过后查到补上链接 今天调试android的时候发现一个诡异的问题 C:\Users\xxxx>adb start-server adb server is out of ...
- html form <label>标签基础语法结构与使用案例教程(转载)
在表单布局中会遇到label标签的使用,label没有任何样式效果,有触发对应表单控件功能.比如我们点击单选按钮或多选框前文字对应选项就能被选中,这个就是对文字加了<label>标签实现. ...
- underscorejs-contains学习
2.12 contains 2.12.1 语法: _.contains(list, item, fromIndex, guard) 2.12.2 说明: list集合包含指定的值则返回true,否则返 ...
- 利用路由修改thinkphp框架开发的后台地址
一般我们写前台是home 后台是 admin那么我们的后台是 域名/admin 那我们要随时修改这个地址是非常麻烦的事情开始可能会想到,就是把模块名称改掉,或者分组(3.1版)这样的话不但要改配置,连 ...
- struts.xml详细配置
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quo ...
- UVa 129 Krypton Factor困难的串 (dfs 递归搜索)
回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int ...
- Ant快速入门(二)-----使用Ant工具
使用Ant非常简单,当正确安装Ant后,只要输入ant或ant.bat即可. 如果运行ant命令时没有指定任何参数,Ant会在当前目录下搜索build.xml文件.如果找到了就以该文件作为生成文件,并 ...
- 你以为PHP那么好自定义升级?
X,PHP如果只是安装操作系统之后,YUM INSTALL之后就可以使用最好啦. 但如果YUM安装的官方PHP版本太低怎么办? 据我所知,现在也只是到PHP5.3.3版本,如果APP应用需要PHP5. ...
- C 编译器错误信息中文翻译
Ambiguous operators need parentheses 不 明确的运算需要用括号括起 Ambiguous symbol ``xxx`` 不明确的符号 Argument list sy ...
- treap启发式合并
注意输入v要在建根的前面. #include <cstdio> #include <iostream> #include <algorithm> #include ...