zoukankan      html  css  js  c++  java
  • Android成长日记-Fragment

    (一)Android在3.0中引入了Fragment的概念,主要目的是用在大屏幕设备上—例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机大的多,有更多的空间放更多的UI组件,并且这些组件之间会产生更多的交互

    (二)Fragment在你的应用中应当是一个模块化和可重用的组件,因为Fragment定义了他自己的布局,以及通过使用他自己的生命周期回调方法定义了他自己的行为,你可以将Fragment包含到多个activity中

    (三)【Fragment知识概要】

    (1)Fragment可以作为Activity界面的一部分组成出现

    (2)可以在一个activity同时多个Fragment,并且一个Fragment可以运行在多个activity中使用

    (3)在activity运行过程中,可以添加、移除、替换Fragment

    (4)Fragment可以响应自己的输入事件,并且有自己的生命周期,他们的生命周期会受宿主activity的生命周期的影响

    -------------------------------------------------------------------

    (四)Fragment的加载方式

    (1)静态加载

    在activity的layout文件中声明Fragment,需要特别注意的是<Fragment>中的Android:name属性指定了在layout中实例化的Fragment类

    --à标示Fragment的方法

    Android:id属性提供一个唯一的ID

    Android:tag属性提供一个唯一字符串

    Eg:

    //实现布局文件中包含<fragment>,<fragment>的name为一个类,类中的将另外一个含有控件 的布局转换成View对象,将View对象-à之前的布局文件中的操作(关键词:静态加载

    1. 在layout创建一个main,在main中存放Fragment.xml

    (ps:Fragment含有id,width,height,name)

    2. 在layout创建一个fragment_kongjian.xml,含有组件(TextView,Button)

    3. 创建fragment.java,创建方法:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

    4. 将Layout布局文件转换成View对象

    View view = inflater.inflate(R.layout.fragment_kongjian, container, false)

    Ps(resource:Fragment需要加载的布局文件

    root:加载layout的父ViewGroup;

    attactToRoot:false,不返回父ViewGroup)

    5. 初始化fragment_kongjian.xml中的空间

    TextView text=(TextView) view.findViewById(R.id.text);

    Button button=(Button) view.findViewById(R.id.button)

    6. 操作略

    7. 在MainActivity.java中创建intent,当按钮点击后跳转到SecondActivity.java,SecondActivity.java含有一个onCreate方法,为打开main布局—>1.main.xm

    8. Main.xml中的frame的布局的name:Fragment.java的具体位置

    ------------------------------------------------------------------

    (2)动态加载

    撰写代码将Fragment添加到一个Activity Layout中

    add():添加一个Fragment(指定要添加的Fragment和插入的View)

    与此类似的还有remove()/replace()

    *处理Fragment事务

    根据用户的交互情况,对Fragment进行添加、移除、替换、以及执行其他操作,提交给Activity的每一套变化被称作一个事务

    FragmentManager fragmentManager==getFragmentManager();

    FragmentTransaction beginTransaction= fragmentManager.beginTransaction();

    Eg:

    clip_image002

    实现步骤:

    1. Fragment fragment=new fragment();

    //这个Fragment为含有View对象的Fragment.java

    2. ps:以事务的方式进行操作

    FragmentManager fragmentManager==getFragmentManager();

    FragmentTransaction beginTransaction= fragmentManager.beginTransaction();

    beginTransaction.add(“R.id.frame”[s1] ,frameManager[s2] );

    beginTransaction.addToBackStack[s3] (null);

    beginTransaction.commit();//提交事务

    -----------------------------------------------------------------------

    PS:每一个事务都是同时执行一套变化,可以在一个事务中设置你所有想执行的变化,包括add(),remove(),replace(),然后提交给Activity,必须调用commit()方法-à与数据库的事务提交方法相同

    如果允许用户通过按下BACK按键返回到前一个Fragment状态,调用commit()之前可以加入addToBackStack()方法

    -----------------------------------------------------------------------


    [s1]一个LinearLayout

    [s2]含有控件的View对象,为当期的FragmentManager.java

    [s3]加入物理返回按键,返回上一个界面

  • 相关阅读:
    Windows Store App 全球化 资源匹配规则
    Windows Store App 全球化 设置指定页面的语言
    Windows Store App 全球化:应用中设置语言选项
    Windows Store App 全球化:运行时响应语言变更
    Windows Store App 全球化:引用类库资源
    Windows Store App 全球化:引用分离资源文件中的资源
    Windows Store App 全球化:在后台代码中引用字符串资源
    Windows Store App 全球化:在XAML元素中引用文件资源
    Windows Store App 全球化:在XAML元素中引用字符串资源
    Windows Store App 变形特效
  • 原文地址:https://www.cnblogs.com/boy1025/p/4301969.html
Copyright © 2011-2022 走看看