Android编程四大组件之Activity用法实例分析

Android编程四大组件之Activity用法实例分析

在Android编程中,Activity是四大组件之一,即应用程序运行时的一个界面。本篇文章将介绍Activity的用法,并通过实例进行展示。

一、Activity的生命周期

在编写Android程序时,需要理解Activity的生命周期,根据不同的生命周期方法实现对应的逻辑。

具体的Activity生命周期包含以下回调方法:

  • onCreate(): Activity被创建时调用,通常在这个方法中加载布局资源。
  • onStart(): Activity正在变得可见时调用。
  • onResume(): Activity正在前台运行时调用,用户可以与Activity交互。
  • onPause(): Activity失去前台焦点时调用,但仍在屏幕上可见。在用户离开当前Activity触发时调用。
  • onStop(): Activity变得不可见时调用。
  • onDestroy(): Activity被销毁时调用。

理解Activity的生命周期对于编写高质量的Android程序至关重要,能够帮助程序更好地管理资源、避免内存泄漏等问题。

二、创建新的Activity

在Android中,创建新的Activity需要在AndroidManifest.xml中注册,注册后方可通过Intent启动。

下面是一个创建新的Activity的示例代码:

public class NewActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new);

        TextView textView = findViewById(R.id.text_view);
        String message = getIntent().getStringExtra("message");
        textView.setText(message);
    }
}

在示例中,创建了一个名为NewActivity的Activity,并在onCreate()方法中加载了布局文件activity_new.xml,并获取了Intent中的"message"参数并显示在TextView中。

在Activity A中启动NewActivity的示例代码:

Intent intent = new Intent(ActivityA.this, NewActivity.class);
intent.putExtra("message", "Hello, New Activity!");
startActivity(intent);

上述代码将会启动NewActivity,并将"Hello, New Activity!"字符串传递给它。

三、Activity的通信

在Android编程中,Activity之间通信需要使用Intent实现。可以通过在Intent中添加数据(如Intent.putExtra()方法)或者设置回调来实现Activity之间的数据共享和通信。

下面是一个Activity之间通信的示例代码:

在Activity A中:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra("message", "Hello, Activity B!");
startActivityForResult(intent, 100);

在Activity B中:

// 处理传递过来的数据
String message = getIntent().getStringExtra("message");
TextView textView = findViewById(R.id.text_view);
textView.setText(message);

// 点击按钮返回结果给Activity A
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.putExtra("result", "Hello, Activity A!");
        setResult(RESULT_OK, intent);
        finish();
    }
});

在Activity A中,启动Activity B并传递消息,同时通过startActivityForResult()方法启动Activity B。在Activity B中,将接收到的消息显示在TextView中,并返回结果给Activity A。

在Activity A中重写onActivityResult()方法处理Activity B返回的结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 100 && resultCode == RESULT_OK) {
        String result = data.getStringExtra("result");
        TextView textView = findViewById(R.id.text_view);
        textView.setText(result);
    }
}

上述代码将Activity B中返回的结果显示在Activity A中的TextView中。

通过上述示例代码,可以学习到Activity的用法,并掌握Activity之间的通信方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android编程四大组件之Activity用法实例分析 - Python技术站

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

相关文章

  • Java数据结构之线段树中的懒操作详解

    Java数据结构之线段树中的懒操作详解 什么是线段树 线段树是一种常用的数据结构,用于快速解决区间查询类问题。 线段树可以支持区间修改,单点查询,区间查询等操作。 线段树是采用二叉树的结构形成的,一个节点表示一个区间[left, right]。每个节点包含三个值:节点对应的区间范围[left, right]、节点代表的值val、以及节点所拥有的标记,通常标记…

    other 2023年6月27日
    00
  • MySQL表字段设置默认值(图文教程及注意细节)

    下面是 “MySQL表字段设置默认值” 的完整攻略: 1. 概述 在 MySQL 数据库中,可以为表的字段设置默认值。当用户没有为某个字段提供值时,系统会自动使用默认值填充。 默认值可以设置为静态数值、表达式或函数,这样可以避免在插入新数据时重复输入相同的值。 2. 默认值的设置方法 在创建表时,可以在字段定义中使用 DEFAULT 关键字来设置默认值。如下…

    other 2023年6月25日
    00
  • PHP面向对象程序设计中的self、static、parent关键字用法分析

    PHP面向对象程序设计中的self、static、parent关键字用法分析 1. self关键字 self关键字在类内部使用,指代当前类自身。 使用self可以访问类的常量、静态属性和静态方法。 示例1:访问类的常量 class MyClass { const MY_CONSTANT = 10; public function getConstant() …

    other 2023年6月28日
    00
  • Linux下使用blkid命令查询设备及文件系统信息的方法

    Linux下使用blkid命令查询设备及文件系统信息 什么是blkid命令 blkid命令用于查询块设备的属性信息及文件系统的类型等信息。 blkid的安装 blkid命令一般会随着Linux系统的安装而自动安装,如果没有安装,可以使用以下命令进行安装: Ubuntu/Debian sudo apt-get update sudo apt-get insta…

    other 2023年6月27日
    00
  • 在次封装easyui-Dialog插件实现代码

    在此封装easyui-Dialog插件实现代码,主要包括以下两个步骤: 引入easyui-Dialog插件库和封装代码文件 编写调用代码,实现弹窗功能 以下是详细步骤说明: 1. 引入easyui-Dialog插件库和封装代码文件 首先需要在网站中引入easyui-Dialog插件库,可以通过以下方式实现: <!– 引入easyui插件库 –&gt…

    other 2023年6月25日
    00
  • idea部署nodejs项目

    IDEA部署NodeJS项目 在这篇文章中,我们将介绍如何在IntelliJ IDEA上部署Node.js项目。 什么是Node.js? Node.js是基于Chrome V8 JavaScript引擎构建的JavaScript运行时。它允许开发者使用JavaScript编写服务器端代码,并使用同一种语言编写客户端和服务器端代码。Node.js带来了许多好处…

    其他 2023年3月28日
    00
  • ascii与hex对照转换表

    当然,我可以为您提供有关“ASCII与Hex对照转换表”的完整攻略,以下是详细说明: ASCII与Hex对照转换表 ASCII码是一用于表示字符的标准编码系统,它将每个字符映射到一个唯一的数字值。Hex(十六进制)是一种数值系统,它使用16个数字(0-9和A-F)数字和字符。在计算机科学中,Hex常用于表示二进制数据,因为它比二进制更易于阅读和理解。以下是A…

    other 2023年5月7日
    00
  • python执行命令行

    以下是Python执行命令行的攻略,包含两个示例: 方法一:使用os模块 Python的os模块提供了执行命令行的功能。以下是一个使用os模块的示例: import os # 执行命令行 os.system("ls -l") 在这个示例中,我们使用os.system()函数执行了一个命令行命令“ls -l”,该命令会列出当前目录下的文件文…

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