onCreate():在创建fragment时系统会调用此方法。在实现代码中,你可以初始化想要在fragment中保持的那些必要组件,当fragment处于暂停或者停止状态之后可重新启用它们。

onCreateView():在第一次为fragment绘制用户界面时系统会调用此方法。为fragment绘制用户界面,这个函数必须要返回所绘出的fragment的根View。如果fragment没有用户界面可以返回空。

onPause():系统会调用该函数作为用户离开fragment的第一个预兆(尽管这并不总意昧着fragment被销毁)。在当前用户会话结束之前,通常要在这里提交任何应该持久化的变化(因为用户可能不再返回)。

@H_403_29@

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

(1)在activity布局文件里声明fragment

(2)通过java代码将fragment添加到已存的ViewGroup中

演示示例如下:

两种颜色区分两个不同的fragment:

(1)在activity布局文件里声明fragment

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

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

android:orientation="vertical" android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="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文件:

import android.app.Fragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

/**

* Created by panchengjia on //.

*/

public class LeftFragment extends Fragment {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

@Override

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

//通过参数中的布局填充获取对应布局

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

return view;

}

@Override

public void onPause() {

super.onPause();

}

}

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

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

tools:context="com.example.administrator.fragmenttest.MainActivity">

android:layout_width="dp"

android:layout_height="match_parent"

android:layout_weight=""

android:name="com.example.administrator.fragmenttest.LeftFragment"

tools:layout="@layout/left_layout" />

android:layout_width="dp"

android:layout_height="match_parent"

android:layout_weight=""

android:name="com.example.administrator.fragmenttest.RightFragment"

tools:layout="@layout/right_layout" />

(2)通过java代码将fragment添加到已存的ViewGroup中

这里我们演示将右边侧的fragment(right_layout.xml)通过java代码添加到主布局viewgroup。

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

想要管理activity中的fragment,可以使用FragmentManager。可以通过在activity中调用getFragmentManager()获得。使用FragmentManager可以做如下事情,包括:

1.使用findFragmentByld()(用于在activity布局中提供有界面的fragment)或者fjndFragmentByTag()获取activity中存在的fragment(用于有界面或者没有界面的fragment)。

2.使用popBackstack()(模仿用户的BACK命令)从后台栈弹出fragment。

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

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

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

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

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

tools:context="com.example.administrator.fragmenttest.MainActivity">

android:layout_width="dp"

android:layout_height="match_parent"

android:layout_weight=""

android:name="com.example.administrator.fragmenttest.LeftFragment"

tools:layout="@layout/left_layout" />

android:id="@+id/right"

android:layout_width="dp"

android:layout_height="match_parent"

android:layout_weight="">

第二步:Java中对应主布局的Main2Activity.java通过代码将fragment添加到主布局ViewGroup中:

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.support.v.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

//声明本次使用到的java类

FragmentManager fragmentManager;

FragmentTransaction fragmentTransaction;

RightFragment rightFragment;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/*在activity对应java类中通过getFragmentManager()

*获得FragmentManager,用于管理ViewGrop中的fragment

* */

fragmentManager=getFragmentManager();

/*FragmentManager要管理fragment(添加,替换以及其他的执行动作)

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

*/

fragmentTransaction = fragmentManager.beginTransaction();

//实例化要管理的fragment

rightFragment = new RightFragment();

//通过添加(事务处理的方式)将fragment加到对应的布局中

fragmentTransaction.add(R.id.right,rightFragment);

//事务处理完需要提交

fragmentTransaction.commit();

}

}

今天就到这,fragmen与activity之间的交互我们后面做详细讲述,早点睡觉了。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android编程fragment,详解Android中Fragment的两种创建方式相关推荐

  1. java 数组合并_拼接_详解Java合并数组的两种实现方式

    详解Java合并数组的两种实现方式 发布于 2020-7-27| 复制链接 摘记: 最近在写代码时遇到了需要合并两个数组的需求,突然发现以前没用过,于是研究了一下合并数组的方式,总结如下.1.Syst ...

  2. Fragment详解之四——管理Fragment(2)

    相关文章: 1.<Fragment详解之一--概述> 2.<Fragment详解之二--基本使用方法> 3.<Fragment详解之三--管理Fragment(1)> ...

  3. Fragment详解之三——管理Fragment(1)

    前言:follow your heart,be your own king 相关文章: 1.<Fragment详解之一--概述> 2.<Fragment详解之二--基本使用方法> ...

  4. 视频教程-Android Studio 开发详解-Android

    Android Studio 开发详解 1999年开始从事开发工作,具备十余年的开发.管理和培训经验. 在无线通信.Android.iOS.HTML5.游戏开发.JavaME.JavaEE.Linux ...

  5. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  6. PCBA加工中常见的两种焊接方式详解

    PCBA加工中常见的两种焊接方式详解 PCBA加工,两种常见的焊接方式就是回流焊和波峰焊,与手动焊接技术相比,自动焊接技术具有减少人为因素的影响.提高效率.降低成本.提高质量等优势,在PCBA加工中, ...

  7. java sort 第二个参数_详解java Collections.sort的两种用法

    Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static > void sort(List list) { l ...

  8. android Fragment详解三:实现Fragment的界面

    为fragment添加用户界面 fragment一般作为activity的用户界面的一部分,把它自己的layout嵌入到activity的layout中.    一个 要为fragment提供layo ...

  9. android 最新写法,详解Android 硬布局item的高级写法

    本文主要介绍了Android 硬布局item的高级写法,分享给大家,具体如下: 效果: 这种布局应该是非常常见了,且写的比较多. 今天简单探讨一下效果图中上下两种布局的写法. 比较 上下效果一致 行数 ...

  10. python java混合编程_详解java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

最新文章

  1. 多所双一流高校通知将恢复正常上班!还有的为在校生开放实验室
  2. 刨根问底——Handler
  3. 神经网络贷款风险评估(base on keras and python ) 原创 2017年08月18日 14:35:17 标签: python / 神经网络 / keras 300 用我
  4. 论文笔记:Spherical CNN
  5. 安装和配置Hadoop
  6. async中series的实现 javascript构件
  7. python猜数字1001untitled_ML - Python 基础
  8. Python入门--变量,浮点型,布尔型,字符串
  9. 面试官:给我说说你对Java GC机制的理解?
  10. R语言机器学习:caret包使用及其黑箱模型解释(连续变量预测)
  11. arccatalog点要素显示不完_初中生到底要不要住校?班主任:不建议,看完这3点你就明白了...
  12. javaagent技术专利申请
  13. 自相关性,偏自相关性分析,时间序列相关性分析(spearman相关性,pearson相关性)
  14. Unity3D说明文档翻译-Audio Manager
  15. 如何批量保存苏宁易购里的商品图片
  16. 滤波器:使用Filter solutions设计椭圆函数LC高通滤波器
  17. vm centos火狐找不到服务器
  18. java(maven)链接neo4j
  19. 分享20个Javascript中的数组方法,收藏
  20. 程序员前辈归纳整理Python中的控制流语句的知识点(要记得收藏)

热门文章

  1. LaTeX中添加\usepackage{subfigure}一直报错的解决办法,亲测
  2. 设计模式——抽象工厂模式
  3. sort();对结构体数组的排序
  4. js 函数实参列表arguments和形参的那点事儿
  5. app启动监听网络类型
  6. 深度学习中Attention机制的“前世今生”
  7. EMNLP2021 “Transformer+预训练”再下一城,港科大开源高效的多模态摘要总结网络...
  8. 【开源】Transformer 在CV领域全面开花:新出跟踪、分割、配准等总结
  9. Hinton向AAAI提交论文竟收到最差评价!深度学习三教父再押宝,AI或突破常识瓶颈...
  10. 可怕!微软AI:一张面部照片一段音频,完美生成头像演讲视频