深入浅析 Android Fragment(上篇)

深入浅析 Android Fragment(上篇)

何谓Fragment

Fragment是Android中一种独立模块的组件,其类似于Activity,可以包含UI界面和交互逻辑,但与Activity不同的是,Fragment是不能单独存在的,它必须依附于Activity才能存在。

Fragment的生命周期

Fragment的生命周期是指Fragment在其创建、运行、销毁的过程中,系统会调用的一组回调函数。Fragment的生命周期包括以下方法:

  • onAttach() : 当Fragment与Activity发生关联时调用;
  • onCreateView() : 当Fragment的布局需要被实例化时调用;
  • onViewCreated() : 当Fragment的布局被实例化并且与Fragment发生关联时调用;
  • onActivityCreated() : 当Fragment所在的Activity被启动完成后调用;
  • onStart() : 当Fragment被启动时调用;
  • onResume() : 当Fragment被恢复时调用;
  • onPause() : 当Fragment被暂停时调用;
  • onStop() : 当Fragment被停止时调用;
  • onDestroyView() : 当Fragment的视图被移除时调用;
  • onDestroy() : 当Fragment被销毁时调用;
  • onDetach() : 当Fragment与Activity的连接被断开时调用。

Fragment的使用方式

在Activity中引入Fragment,可以通过以下三种方式:

静态添加

静态添加是通过在布局文件中直接声明<fragment>标签,将Fragment组件和Activity进行绑定。在Activity启动时,Fragment也会一起被实例化。

示例代码:

<fragment
    android:id="@+id/fragment_main"
    android:name="com.example.FragmentMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

动态添加

动态添加是在Activity运行时,通过代码添加Fragment组件,在需要的时候将Fragment添加到Activity中。动态添加的好处在于可以在逻辑处理的过程中动态切换和添加Fragment。

示例代码:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentMain fragmentMain = new FragmentMain();
transaction.add(R.id.fragment_container, fragmentMain);
transaction.commit();

动态替换

动态替换是将已经添加到Activity中的Fragment替换成其他的Fragment,可以用于在不同的页面间进行快速切换。

示例代码:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentTransaction.replace(R.id.fragment_container, new FragmentSub());
transaction.commit();

Fragment的通信方式

  • 直接调用:在一个Fragment中直接调用其他Fragment的公共方法实现通信;
  • Activity作为中介:通过Activity来实现Fragment之间的通信;
  • 使用接口回调:让一个Fragment实现一个接口,然后让另一个Fragment在其内部持有该接口的实例,在适当的时候调用该实例的方法完成回调。

示例代码:

// FragmentMain中定义一个接口
public interface OnButtonClick {
    void onButtonClick(String string);
}

// FragmentSub中持有该接口的实例,并在需要时调用其方法
private OnButtonClick onButtonClick;
public void setOnButtonClick(OnButtonClick onButtonClick) {
    this.onButtonClick = onButtonClick;
}
onButtonClick.onButtonClick("Hello, world!");

// Activity中作为中介,实现OnButtonClick接口,并将实例传递给Fragment
FragmentMain fragmentMain = new FragmentMain();
fragmentMain.setOnButtonClick(new OnButtonClick() {
    @Override
    public void onButtonClick(String string) {
        Log.d(TAG, string);
    }
});
FragmentTransaction.replace(R.id.fragment_container, fragmentMain);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入浅析 Android Fragment(上篇) - Python技术站

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

相关文章

  • 如何使用正则表达式验证用户名?

    如何使用正则表达式验证用户名攻略 在Web开发中,我们经常需要验证用户输入的用户名是否符合规范。正则表达式是一种强大的工具,可以用于验证用户名是否合特定的格式。本攻略将介绍如何使用正则表式验证用户名,并提供两个示例。 正则表达式 则表达式是一种用于匹配字符串的模式。它由一些特殊字符和普通字符组成,可以用于验证字符串是否符特定的格式。以下是一些常用的正则表达式…

    other 2023年5月9日
    00
  • springCloud config本地配置操作

    关于“springCloud config本地配置操作”的完整攻略,我会在以下几个部分给出详细讲解: 简介:介绍Spring Cloud Config的概念和作用。 安装依赖:介绍如何在本地环境中安装Spring Cloud Config的相关依赖。 配置文件:介绍如何在本地环境中创建、修改和管理配置文件。 本地访问:介绍如何在本地环境中访问Spring C…

    other 2023年6月25日
    00
  • Java创建型设计模式之建造者模式详解

    Java创建型设计模式之建造者模式详解 什么是建造者模式? 建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离。通过使用相同的构建过程,可以创建不同的表示。 建造者模式的结构 建造者模式由以下几个主要组件组成: 产品(Product):表示要构建的复杂对象。 抽象建造者(Builder):定义了构建产品的抽象方法,以及获取最终产品的方法。 …

    other 2023年10月15日
    00
  • ASP.NET 应用程序级 验证用户是否登录 一般处理程序

    ASP.NET提供了多种方式来验证用户是否登录,其中应用程序级别的验证是通过在Global.asax中的Session_Start事件处理程序来实现的。下面是一般处理程序实现应用程序级别验证的具体步骤: 打开Visual Studio创建一个新的Web应用程序 添加一个一般处理程序(.ashx文件),命名为CustomHandler。此处理程序将提供验证用户…

    other 2023年6月25日
    00
  • 详解webpack4之splitchunksPlugin代码包分拆

    下面是“详解webpack4之splitchunksPlugin代码包分拆”的完整攻略: 1. splitchunksPlugin是什么 SplitchunksPlugin是webpack4中的一个插件,用于将代码块分离成不同的文件,以实现优化性能和减小代码体积的目的。 2. 配置示例 让我们在webpack.config.js文件中创建一个新的optimi…

    other 2023年6月27日
    00
  • Android4.4 访问外部存储详解及实例

    Android4.4 访问外部存储详解及实例 在Android 4.4及以上的版本中,访问外部存储需要进行特殊处理。以下是详细的步骤: 在AndroidManifest.xml文件中添加权限声明: xml <uses-permission android:name=\”android.permission.WRITE_EXTERNAL_STORAGE\…

    other 2023年10月13日
    00
  • CAP-微服务间通信实践

    CAP-微服务间通信实践 概述 随着微服务架构的流行,微服务之间通信成为了一个必须要考虑的问题。在微服务架构中,微服务间的通信主要分为两种方式:同步和异步。 同步通信包括了HTTP调用、RPC调用等,主要通过阻塞等待来实现,直接返回请求结果。 异步通信则包括了消息队列,主要通过发布订阅模式来实现,不对请求结果进行直接返回,而是将请求结果放入消息队列,在之后处…

    其他 2023年3月28日
    00
  • js提示信息jtip封装代码,可以是图片或文章

    我来为您讲解一下如何封装JS提示信息(jtip)的代码。 1. 什么是jtip js提示信息jtip是一种常用的页面交互效果,常用于鼠标悬停于某个元素时,通过弹出浮层来展示提示信息。jtip可以是图片或者文字等形式展现,美观易用,是一种比较常见的Web元素。 2. jtip实现方式 实现jtip的方式主要有两种,一种是使用JavaScript代码来编写实现,…

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