本文主要介绍了在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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。