Android Fragment 基本了解(图文介绍)

Android Fragment 基本了解(图文介绍)

什么是 Fragment?

Fragment 是一种 UI 组件,可以像 Activity 一样具有用户界面,并且可以在 Activity 中组合使用多个 Fragment 以构建复杂的用户界面。

Fragment 的使用场景

Fragment 的使用场景主要涉及以下几种情况:

  • 在大屏幕设备(比如平板电脑)上展示多个 UI 组件。
  • 在一些场景下,多个 Activity 需要展示相似或相同的 UI 组件。
  • 当需要动态添加、移除或替换 UI 组件时,使用 Fragment 可以更为轻松地实现。

Fragment 的使用方法

1. 创建 Fragment

class MyFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater, 
        container: ViewGroup?, 
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_my, container, false)
    }
}

2. 在 Activity 中添加并展示 Fragment

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 创建 Fragment 实例
        val myFragment = MyFragment()

        // 在 Activity 中添加 Fragment
        supportFragmentManager.beginTransaction()
            .add(R.id.fragment_container, myFragment)
            .commit()
    }
}

以上代码中,我们在 MainActivity 中添加了一个 Fragment,并指定了它的 UI 组件布局。

在 Activity 的布局文件中,我们需要创建一个 FrameLayout 容器,来承载 Fragment 的 UI 组件。

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

3. Fragment 生命周期

Fragment 的生命周期与 Activity 类似,包含多个状态,开发者可以在不同的状态下实现不同的动作和功能。以下为 Fragment 的生命周期:

  • onAttach(): 当 Fragment 被绑定到 Activity 时调用。
  • onCreate(): 在 Fragment 创建时调用。
  • onCreateView(): 当 Fragment 的 UI 组件被创建时调用。
  • onStart(): 在 Fragment 变为可见时调用。
  • onResume(): 在 Fragment 处于活动状态时调用。
  • onPause(): 当 Fragment 将要暂停或停止时调用。
  • onStop(): 当 Fragment 不再可见时调用。
  • onDestroyView(): 当 Fragment 的视图被销毁时调用。
  • onDestroy(): 当 Fragment 被销毁时调用。
  • onDetach(): 当 Fragment 与 Activity 解绑时调用。

示例说明

示例一:添加两个 Fragment

在一个 Activity 中添加两个 Fragment,实现简单的信息展示功能。具体操作如下:

  1. 创建两个 Fragment,一个用于展示用户信息,一个用于展示系统信息。

  2. 在 Activity 中添加两个 Fragment 并展示它们:

class MainActivity : AppCompatActivity() {
    private val userInfoFragment = UserInfoFragment()
    private val systemInfoFragment = SystemInfoFragment()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 添加两个 Fragment 到 Activity 中
        supportFragmentManager.beginTransaction()
            .add(R.id.fragment_container, userInfoFragment)
            .add(R.id.fragment_container, systemInfoFragment)
            .commit()

        // 初始时显示用户信息 Fragment
        supportFragmentManager.beginTransaction()
            .hide(systemInfoFragment)
            .show(userInfoFragment)
            .commit()
    }
}
  1. 在布局文件中添加两个 FrameLayout 容器,分别用于展示用户信息和系统信息:
<FrameLayout
    android:id="@+id/user_info_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

<FrameLayout
    android:id="@+id/system_info_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />
  1. 在各自的 Fragment 中实现 UI 组件的布局和数据填充等操作。示例代码如下:
class UserInfoFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater, 
        container: ViewGroup?, 
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(R.layout.fragment_user_info, container, false)

        // 填充用户信息到 UI 组件
        view.findViewById<TextView>(R.id.tv_name).text = "张三"
        view.findViewById<TextView>(R.id.tv_age).text = "28"
        view.findViewById<TextView>(R.id.tv_gender).text = "男"

        return view
    }
}

class SystemInfoFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater, 
        container: ViewGroup?, 
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(R.layout.fragment_system_info, container, false)

        // 填充系统信息到 UI 组件
        view.findViewById<TextView>(R.id.tv_os_version).text = "Android 11.0"
        view.findViewById<TextView>(R.id.tv_device_type).text = "Pixel 4"
        view.findViewById<TextView>(R.id.tv_storage).text = "64GB"

        return view
    }
}

示例二:替换 Fragment

在一个 Activity 中使用一个按钮,在用户点击按钮时替换当前展示的 Fragment。具体操作如下:

  1. 创建两个 Fragment,一个用于展示用户信息,一个用于展示系统信息。

  2. 在 Activity 中添加一个 FrameLayout 容器,并默认展示用户信息 Fragment:

class MainActivity : AppCompatActivity() {
    private val userInfoFragment = UserInfoFragment()
    private val systemInfoFragment = SystemInfoFragment()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 添加初始的 Fragment 到 Activity 中
        supportFragmentManager.beginTransaction()
            .add(R.id.fragment_container, userInfoFragment)
            .commit()
    }
}
<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />
  1. 在布局文件中添加一个按钮,用于替换当前展示的 Fragment:
<Button
    android:id="@+id/btn_switch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Switch Fragment"
    />
  1. 在 Activity 中实现点击按钮时替换 Fragment 的功能:
class MainActivity : AppCompatActivity() {
    // 省略之前的代码

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 添加初始的 Fragment 到 Activity 中
        supportFragmentManager.beginTransaction()
            .add(R.id.fragment_container, userInfoFragment)
            .commit()

        // 设置按钮点击事件监听器
        findViewById<Button>(R.id.btn_switch).setOnClickListener {
            switchFragment()
        }
    }

    private fun switchFragment() {
        val transaction = supportFragmentManager.beginTransaction()

        // 判断当前展示的 Fragment 是否为用户信息 Fragment
        if (userInfoFragment.isVisible) {
            // 如果是,则替换为系统信息 Fragment
            transaction.replace(R.id.fragment_container, systemInfoFragment)
        } else {
            // 如果不是,则替换为用户信息 Fragment
            transaction.replace(R.id.fragment_container, userInfoFragment)
        }

        transaction.commit()
    }
}
  1. 在各自的 Fragment 中实现 UI 组件的布局和数据填充等操作。示例代码同样与之前的示例相同,此处不再赘述。

以上便是 Fragment 基本使用方法及示例说明,希望能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android Fragment 基本了解(图文介绍) - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 文件无法直接发送到蓝牙点击右键没有发送到蓝牙设备

    文件无法直接发送到蓝牙点击右键没有发送到蓝牙设备 如果我们将电脑上的文件发送到其他设备使用蓝牙时,我们通常会采用右键菜单中的“发送到”操作。但是,有时候当我们右击待发送的文件时,却发现“发送到”选项中没有“蓝牙设备”选项,也无法直接将文件发送到蓝牙设备上。对于这种情况,我们可以尝试以下方法来解决: 方法一:重新启动蓝牙服务并连接设备 首先,我们需要确认蓝牙服…

    other 2023年6月27日
    00
  • 流放之路3.2暗影欺诈者靛蓝灵魂吸取BD介绍 高伤害速回BD攻略

    流放之路3.2暗影欺诈者靛蓝灵魂吸取BD介绍 1. 简介 本篇攻略介绍的是针对流放之路3.2版本的暗影欺诈者靛蓝灵魂吸取建议BD,该BD特点是高伤害并且速回,并且兼具稳定性,可以在大多数游戏场景下适应。 2. 技能树 具体的技能树点数可以在Poeplanner等网站上寻找,这里只介绍技能树的主要方向:旨在打出高伤害并且速回的攻击。该BD核心技能是Cyclon…

    other 2023年6月27日
    00
  • java创建list

    以下是“Java创建List”的完整攻略: Java创建List 在Java中,List是一种常用的数据结构,它可以存储一组有序的元素。本攻略将介绍如何在Java中创建List。 步骤1:导入List类 在创建List之前,您需要导入Java的List类。您可以使用以下代码导入List类: import java.util.List; 步骤2:创建List对…

    other 2023年5月7日
    00
  • cmd怎么修改文件扩展名? cmd显示修改文件扩展名的教程

    当使用命令提示符(cmd)修改文件扩展名时,可以使用ren命令来完成。下面是一个详细的攻略,包含了两个示例说明: 首先,打开命令提示符(cmd)窗口。可以通过按下Win + R键,然后输入\”cmd\”并按下Enter键来打开。 在命令提示符窗口中,使用cd命令导航到包含要修改扩展名的文件所在的目录。例如,如果文件位于D盘的Documents文件夹中,可以输…

    other 2023年8月5日
    00
  • Java中的反射机制基本运用详解

    Java中的反射机制基本运用详解 什么是Java反射机制? Java反射机制指的是Java在运行状态下,可以动态获取类的信息,创建对象,调用对象的方法等操作的能力。它可以在编译期间不知道类的全部信息,在运行时动态获取所需信息,这样可以大大提高代码的灵活性和可扩展性,但同时也会增加代码的复杂度和运行效率。Java中的反射机制主要由以下几个类和接口组成: Cla…

    other 2023年6月27日
    00
  • cpu是什么?

    CPU是什么? CPU(Central Processing Unit,中央处理器)是计算机中的一个重要组件,它是计算机执行指令和处理数据的核心部件,相当于计算机的“大脑”。 CPU主要有两个基本部分:控制单元(Control Unit)和算术逻辑单元(Arithmetic Logic Unit,ALU)。控制单元用于控制指令的执行流程,包括指令的获取、解析…

    其他 2023年4月16日
    00
  • C#变量命名规则小结

    当使用C#编程时,了解变量命名规则是非常重要的。变量命名规则指定了在编写C#代码时,变量名应该遵循的规范。下面是一个详细的攻略,帮助您理解C#变量命名规则。 变量命名规则 变量名只能包含字母、数字和下划线(_),不能包含空格或其他特殊字符。 变量名必须以字母或下划线开头,不能以数字开头。 变量名区分大小写,例如myVariable和myvariable是不同…

    other 2023年8月8日
    00
  • Android自定义popupwindow实例代码

    下面我会详细讲解“Android自定义popupwindow实例代码”的完整攻略。 什么是PopupWindow PopupWindow 是 Android 提供的一个弹出窗口组件,可以在当前窗口的上面弹出一个浮层。通常情况下,这个浮层会包含一些用户界面上的交互组件,例如列表、按钮等。 创建 PopupWindow 要创建 PopupWindow,你需要实例…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部