第二行代码第四章笔记

第四章 Fragment

Fragment是什么

Fragment是一种可以嵌入在活动当中的UI片段,建议使用support-v4库中的Fragment,因为它可以让Fragment在所有Android系统版本中保存功能一致性。

Fragment的使用方式

Fragment的简单用法

  1. 新建两个Fragment布局文件

  2. 并在各自的Fragment代码文件中复写onCreateView()方法,然后通过LayoutInflater的inflate()方法将刚才定义的Fragment布局文件动态加载进来。如:View view = inflater.inflate(R.layout.xxx, container, false)

  3. 在Activity布局文件中添加两个Fragment控件,同时还需要通过android:name属性来显示指明要添加的Fragment类名,这里一定要将类的包名也加上

动态添加Fragment

  1. 创建待添加的Fragment实例

  2. 获取FragmentManager,在Activity中科院直接通过调用getSupportFragmentManager()方法得到

  3. 开启一个事物,通过调用beginTransaction()方法开启

  4. 像容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加到Fragment实例

  5. 提交事务,调用commit()方法来完成

在Fragment中模拟返回栈,FragmentTransaction中提供了一个addToBackStack()方法,可以用于将一个事物添加到返回栈中

transaction.addToBackStack(null)

Fragment和Activity之间进行通信

  1. Activity中调用Fragment里的方法,调用SupportFragmentManager中findFragmentById()方法,可以从活动中得到相应Fragment的实例,然后就能调用Fragment里的方法。如:RightFragment rightFragment = (RightFragment) getSupportFragmentManager().findFragmentById(R.id.right.fragment)

  2. Fragment中调用Activity里的方法,每个Fragment都可以调用getActivity()方法来得到和当前Fragment相关联的Activity实例。如:MainActivity activity = (MainActivity) getActivity()

  3. Fragment之间的通信,首先在一个Fragment中得到与他相关联的Activity,然后在通过这个Activity去获取另一个Fragment的实例,这样即实现了Fragment之间的通信功能

Fragment的生命周期

fragment生命周期.png

动态加载布局的技巧

  1. Android中的常见的限定符

Android 常见限定符.jpg

  1. 最小宽度限定符,最小宽度限定符允许我们对屏幕的宽度指定一个最小值(以dp为单位),然后以这个最小值为临界点,屏幕宽度大于这个值的设备就加载这一个布局。如:程序运行在屏幕宽度大于600dp的设备上时,会加载layout-sw600p/activity_main.xml,而程序运行在屏幕宽度小于600dp的设备上时,会加载默认的layout/activity_main.xml

简易版新闻应用——Fragment实践(暂略)

### 关于郭霖《第一行代码》第三版第二章的学习笔记 在郭霖的《第一行代码》第三版中,第二章主要围绕 Android 应用的基础概念展开,介绍了如何创建第一个 Android 项目以及理解项目的结构。以下是基于已有引用内容和专业知识整理的相关学习笔记: #### 创建 Android 项目 为了开发 Android 应用程序,开发者需要准备必要的工具并搭建开发环境。这些工具包括但不限于 JDK (1.8 或更高版本)[^1]、Android SDK 和集成开发环境 Android Studio[^1]。 一旦安装完成,可以通过 Android Studio 的向导界面来创建一个新的 Android 项目。在此过程中,开发者可以选择目标设备类型(如手机和平板)、设置最低支持的 API 版本(通常建议从 API 15 开始,即 Android 4.0),以及其他配置选项[^3]。 #### 理解 Android 项目结构 新创建的 Android 项目会自动生成一系列文件夹和文件,其中一些重要的部分包括: - **`app/src/main/java/`**: 存放 Java/Kotlin 源码的地方。 - **`res/` 文件夹**: 资源目录,用于存储布局 XML 文件、图片资源和其他静态数据。 - **`AndroidManifest.xml`**: 定义应用程序的核心元信息,比如活动组件 (`Activity`) 和权限声明。 #### 显式与隐式 Intent 的使用 Intent 是 Android 中一种非常重要的机制,用来描述一个操作的动作及其携带的数据。当通过 `Intent(context, TargetClass.class)` 这种方式指定要跳转的目标 Activity 时,则称为显式 Intent[^2];相对应地,如果仅指定了动作类别或者 MIME 类型而不具体指向某个 Component,则属于隐式 Intent。 #### 多线程处理简介 对于耗时较长的操作,应该避免阻塞主线程以免影响用户体验。为此可以利用多线程技术,在后台执行复杂计算或网络请求等工作负载。最简单的做法就是继承 Thread 类重载 run 方法,或者是实现 Runnable 接口并将其实例传递给新的 Thread 对象实例化之后调用 start 方法即可开启子线程运行相应任务[^4]。 ```java // 实现Runnable接口的方式启动线程 new Thread(new Runnable() { @Override public void run() { // 执行耗时操作 } }).start(); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值