zoukankan      html  css  js  c++  java
  • android Fragments介绍

    Fragments是Android3.0引入的概念,译为片段、碎片,为了解决不同屏幕分辩率的动态和灵活UI设计。

    Fragment表现Activity中UI的一个行为或者一部分。可以将多个fragment组合在一起,放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment。把fragment想象成一个activity的模块化区域,有它自己的生命周期,接收属于它自己的输入事件,并且可以在activity运行期间添加和删除。

    Fragment必须总是被嵌入到一个activity中。它们的生命周期直接受其宿主activity的生命周期影响。 例如:当activity被暂停,那么在其中的所有fragment也被暂停;当activity被销毁,所有隶属于它的fragment也被销毁。然而,当一个activity正在运行时(处于resumed状态),我们可以独立地操作每一个fragment,比如添加或删除它们。当处理这样一种fragment事务时,可以将它添加到activity所管理的back stack —— 每一个activity中的back stack实体都是一个发生过的fragment事务的记录。back stack允许用户通过按下 BACK 按键从一个fragment事务后退(往后导航)。

    将一个fragment作为activity布局的一部分添加进来时,它处在activity的view hierarchy中的ViewGroup中,并且定义有它自己的view布局。通过在activity的布局文件中声明fragment来插入一个fragment到你的activity布局中,或者可以写代码将它添加到一个已存在的ViewGroup。然而,fragment并不一定必须是activity布局的一部分;如果愿意的话,也可以将一个fragment隐藏在activity的后台工作。

    Fragments的生命周期如下图:

    要创建一个fragment,必须创建一个 Fragment 的子类(或者继承自一个已存在的它的子类)。 Fragment 类的代码看起来很像Activity。它包含了与activity类似的回调方法,例如onCreate()、onStart()、onPause(),以及onStop()。事实上,如果你准备将一个现成的Android应用转换到使用fragment技术,可能只需简单的将代码从activity的回调函数分别移动到fragment的回调方法。

    使用Fragments 必须实现的三个回调方法分别为

    (1)onCreate 系统创建Fragments时调用,可做执行初始化工作或者当程序被暂停或停止时用来恢复状态,跟Activity 中的onCreate相当。

    (2)onCreateView 用于首次绘制用户界面的回调方法,必须返回要创建的Fragments视图UI。如果不希望提供Fragments用户界面可以返回NULL。 

    (3)onPause 当用户离开Fragments时调用,这时需要提交任何应该持久的变化,因为用户可能不会回来。

    提供Fragments的界面必须重写onCreateView()方法:

    public static class ExampleFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            return inflater.inflate(R.layout.example_fragment, container, false);
        }
    }

    inflate()方法的三个参数:

    第一个是resource ID,指明了当前的Fragment对应的资源文件;

    第二个参数是父容器控件;

    第三个布尔值参数表明是否连接该布局和其父容器控件,在这里的情况设置为false,因为系统已经插入了这个布局到父控件,设置为true将会产生一个多余的ViewGroup。

    当Fragment被加入Activity中时,它会处在对应的ViewGroup中。

    Fragment有两种加载方式:

    (1)在Activity的layout中使用标签<fragment>声明。

    (2)在代码中把它加入到一个指定的ViewGroup中。

    FragmentManager fragmentManager = getFragmentManager();

    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    ExampleFragment fragment = new ExampleFragment();

    fragmentTransaction.add(R.id.fragment_container, fragment);

    fragmentTransaction.commit();

    系统内置了三种Fragments ,这三种Fragments 分别有不同的应用场景:

    (1)DialogFragment 对话框式的Fragments,可以将一个Fragments对话框并到activity管理的Fragments Back Stack中,允许用户回到一个曾经摒弃的Fragments。

    (2)ListFragments 类似于ListActivity的效果,并且提供了ListActivity类似的onListItemCLick和setListAdapter等方法。

    (3)PreferenceFragments 类似于PreferenceActivity,可以用来创建类似IPAD的设置界面。

     

  • 相关阅读:
    python实现的列表操作
    python的静态方法
    python标准库学习2
    javascript继承原型继承的例子
    jQuery高亮显示文本中重要的关键字
    表格展开伸缩
    jQuery设计思想
    python标准库学习3
    python中的继承和抽象类的实现
    表格的变色问题
  • 原文地址:https://www.cnblogs.com/lyricgan88/p/3367024.html
Copyright © 2011-2022 走看看