,,详解Android中Fragment的两种创建方式

,,详解Android中Fragment的两种创建方式

本文主要介绍了在Android中创建碎片的两种方法,具有一定的参考价值。有兴趣的可以看看。

片段是活动中的行为或用户界面的一部分。您可以在单个活动上将多个片段组合成一个多区域UI,且它可以在多个活动中重用。您可以将片段视为活动的模块部分。它有自己的生命周期,接收自己的输入事件,并且可以在活动运行时添加或删除。

两个概念:Fragment、宿主

片段的生命周期直接受到其宿主活动的生命周期的影响。例如,一旦活动被挂起,其中的所有片段也被挂起,而一旦活动被销毁,其中的所有片段也被销毁。

在Android版本中引入7fragment的概念(11)

使用fragment,您不必管理视图系统的复杂变化。通过将actjvjty的布局划分为若干片段,可以在运行时编辑activity的表示,并且这些更改将保存在由activity管理的后台堆栈中。

要创建一个片段,你必须创建一个片段的子类(或者从它继承的子类)。片段类的代码看起来很像activity。它有类似activity的回调函数,比如onCreate()、onstart()、onPause()和onstop()。事实上,如果你是将一个现成的Android应用转移到fragment,你可以简单地将activity的回调函数中的代码移植到各自的fragment回调函数中。

除了基类片段之外,这里还有一些您可以继承的子类:

对话片段、列表片段、首选项片段

一般情况下,你至少需要实现以下几个生命周期方法:

OnCreate():这个方法将在创建片段时被调用。在实现代码中,您可以初始化想要保留在fragment中的必要组件,然后在fragment处于暂停或停止状态时重新启用它们。

OnCreateView():当第一次绘制fragment的用户界面时,将调用该方法。要为片段绘制用户界面,该函数必须返回所绘制片段的根视图。如果fragment没有用户界面,它可以返回null。

OnPause():系统会调用这个函数作为用户留下碎片的第一个预兆(虽然这并不总是意味着碎片被销毁)。在当前用户会话结束之前,任何应该持久化的更改通常都在这里提交(因为用户可能永远不会返回)。

现在介绍将fragment添加到activity的两种方式:

(1)在活动布局文件中声明片段。

(2)通过java代码将片段添加到现有的视图组中

例子如下:

两种颜色区分两个不同的片段:

(1)在活动布局文件中声明片段。

现在我们通过在layout的主布局文件activity_main.xml中声明上图中的左右片段来实现显示效果。

第一步:在layout中创建左边(右边)的布局文件left_layout.xml(right_layout.xml)文件:

?xml版本=“.”编码='utf-'?

linear layout xmlns:Android=' http://schemas . Android . com/apk/RES/Android '

Android:orientation=' vertical ' Android:layout _ width=' match _ parent '

Android:layout _ height=' match _ parent '

安卓:重力='center_horizontal '

android:background='#f '

纽扣

Android:layout _ width=' wrap _ content '

Android:layout _ height=' wrap _ content '

Android:text='潘大人'/

纽扣

Android:layout _ width=' wrap _ content '

Android:layout _ height=' wrap _ content '

Android:text='蓝天大海'/

/线性布局

第二步:建立left_layout.xml(right_layout.xml)布局对应的继承Fragment的java类LeftFragment.java(RightFragment.java)

LeftFragment.java文件:

导入Android . app . fragment;

导入Android . OS . bundle;

导入Android . view . layoutinflater;

导入Android . view . view;

导入Android . view . view group;

/**

*由潘成家于//创建。

*/

公共类LeftFragment扩展片段{

@覆盖

public void on create(Bundle saved instancestate){

super . oncreate(savedInstanceState);

}

@覆盖

公共视图onCreateView(LayoutInflater inflater,ViewGroup容器,Bundle savedInstanceState) {

//通过在参数中填充布局得到对应的布局。

view view=inflater . inflate(r . layout . left _ layout,container,false);

返回视图;

}

@覆盖

public void onPause() {

超级棒。on pause();

}

}

第三步:layout中在主布局文件activity_main.xml中声明左右两个fragment布局

?可扩展标记语言版本="."编码='utf-'?

线性布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '

xmlns:tools=' http://模式。安卓。' com/tools '

android:id='@ id/activity_main '

Android:layout _ width=' match _ parent '

Android:layout _ height=' match _ parent '

安卓:方向='水平'

工具:context=' com。举例。管理员。碎片测试。'主要活动'

碎片

android:layout_width='dp '

Android:layout _ height=' match _ parent '

android:layout_weight=' '

Android:name=' com。举例。管理员。碎片测试。'左片段'

工具:layout='@layout/left_layout' /

碎片

android:layout_width='dp '

Android:layout _ height=' match _ parent '

android:layout_weight=' '

Android:name=' com。举例。管理员。碎片测试。'右片段'

工具:layout='@layout/right_layout' /

/线性布局

(2)通过Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)代码将碎片添加到已存的视图组中

这里我们演示将右边侧的片段(右_布局. xml)通过Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)代码添加到主布局视图组。

通过代码添加碎片用到的知识点汇总如下:

想要管理活动中的片段,可以使用碎片管理器。可以通过在活动中调用getFragmentManager()获得。使用碎片管理器可以做如下事情,包括:

1.使用findFragmentByld()(用于在活动布局中提供有界面的片段)或者fjndFragmentByTag()获取活动中存在的片段(用于有界面或者没有界面的片段).

2.使用popBackstack()(模仿用户的背部命令)从后台栈弹出片段。

3.使用addonBackstackChangedListener()注册一个监听后台栈变化的监听器。

在活动中使用碎片的一大特点是具有添加、删除、替换,和执行其它动作的能力,以响应用户的互动。提交给活动的每一系列变化被称为事务,并且可以用碎片交易中的蜜蜂处理。

这里用到的的知识点会在代码中做标注,大家可以通过查看应用程序接口文档具体了解扩展用法。

第一步:布局中主布局文件activity_main2.xml文件(左侧碎片布局直接在布局中声明,右侧碎片通过代码填充到框架布局实现):

?可扩展标记语言版本="."编码='utf-'?

线性布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '

xmlns:tools=' http://模式。安卓。' com/tools '

android:id='@ id/activity_main '

Android:layout _ width=' match _ parent '

Android:layout _ height=' match _ parent '

安卓:方向='水平'

工具:context=' com。举例。管理员。碎片测试。'主要活动'

碎片

android:layout_width='dp '

Android:layout _ height=' match _ parent '

android:layout_weight=' '

Android:name=' com。举例。管理员。碎片测试。'左片段'

工具:layout='@layout/left_layout' /

框架布局

android:id='@ id/right '

android:layout_width='dp '

Android:layout _ height=' match _ parent '

Android:layout _ weight=' '/框架布局

/线性布局

第二步:Java中对应主布局的Main2Activity.java通过代码将碎片添加到主布局视图组中:

导入安卓。app。片段管理器;

导入安卓。app。碎片交易;

导入安卓。支持。五、app。appcompactivity

导入安卓。OS。捆绑;

公共类主要活动扩展AppCompatActivity {

//声明本次使用到的Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)类

片段管理器片段管理器;

碎片交易碎片交易;

右碎片

@覆盖

受保护的void onCreate(Bundle saved instancestate){

超级棒。oncreate(savedInstanceState);

setContentView(r . layout。活动_主);

/*在活动对应Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)类中通过getFragmentManager()

*获得碎片管理器,用于管理视图组中的碎片

* */

片段管理器=getFragmentManager();

/*碎片管理器要管理片段(添加,替换以及其他的执行动作)

*的一系列的事务变化,需要通过碎片事务来操作执行

*/

fragment transaction=fragment manager . begin transaction();

//实例化要管理的片段

right fragment=new right fragment();

//通过添加(事务方式)将片段添加到相应的布局中

fragment transaction . add(r . id . right,right fragment);

//交易需要处理后提交。

fragment transaction . commit();

}

}

今天到此为止。我们后面会详细讲fragmen和activity的交互。早点睡觉。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: