文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android四大组件之Activity详细介绍

2024-04-02 19:55

关注

理论概述

Activity的理解

Activity的定义

Activity,字面翻译为活动,他是Android定义的四大应用组件之一,也是最重要的用的最多的。

一个应用有多个界面,也就是包含多个Activity

Activity的作用

用来提供一个能够让用户操作并与之交互的界面

一个Activity相当于一个容器,用于存放各种控件的容器,也可以理解为是与用户交互的接口

类比Activity与Servlet

Intent的理解

Intent,直译为意图,也就是你想要做什么或者想要去哪

Intent(Activity, Service, BroadcastReceiver三个组件间通信的信使),但不是Android中的四大组件之一。

例如:我要在Activity中启动另外一个Activity,就必须使用Intent对象。Intent对象还可以携带数据

Intent的分类

显式: 明确指定的目标组件的意图(也就是说很明确知道要做什么去或者去哪里),当操作当前应用自己的组件的时候使用显式Intent

隐式: 没有明确指定目标组件的意图(也就是说不明确知道要做什么去或者去哪里),操作其它应用自己的组件的时候使用隐式Intent

Intent的使用

创建

显式: Intent(Context context, Class activityClass),使用这样的构造函数创建的Intent对象就是显式的

隐式: Intent(String action) //与Activity与的action匹配,使用这样的构造函数创建的Intent对象就是隐式的,例如分享功能,也是启动另外一个Activity,但是到底启动哪个Activity,还不知道,由用户选择

携带数据

额外: putExtra(String key, Xxx value) 内部用map容器保存

有特定前缀: setData(Uri data) //tel:123123, smsto:123123

读取数据

额外:Xxx getXxxExtra(String key)

有特定前缀: Uri getData()

IntentFilter的理解

在配置Activity时,可以为Activity指定一个IntentFilter的配置

如果你的Activity希望其他应用能访问到,需要配置<intent-filter>

如果这个Activity是被内部应用的某个Activity来访问的,就不需要配置<intent-filter>

如果想启动其他应用界面你必须用隐式的intent,且目标界面Activity配置了<intent-filter>

相关的API

设置点击监听

Activity中添加监听


view.setOnClickListener(OnClickListener listener);

layout中添加监听

layout中


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="MainStart2"
    android:text="带回调启动"/>

Activity中


package com.example.activity_01;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    public void MainStart2(View view) {
        Toast.makeText(this, "带回调启动", Toast.LENGTH_SHORT).show();
    }
}

设置长按监听


view.setOnLongClickListener(OnLongClickListener listener);

Activity的开发

开发流程


1. 界面布局
2. 实现Activity的功能
	1). 定义所有需要操作的视图对象并初始化
	2). 给视图设置监听
	3). 在回调方法中实现逻辑
3. 实现一般启动
	1). 定义好界面二
		1). 布局
		2). 定义Activity类
		3). 配置
		4). 重写onCreate(), 并加载布局
	2). 启动界面二
		1). 创建Intent对象(显式)
		2). 通过intent携带额外数据
		3). 启动Activity
		4). 得到intent对象
		5). 通过intent读取额外数据
		6). 显示到EditText
4. 实现一般返回:
	1). 在显示Second界面时, Main界面其实在, 只是被盖住了
	2). 关闭当前界面: finish()

Activity的使用

界面布局

实现Activity的功能

1). 定义所有需要操作的视图对象并初始化
2). 给视图设置监听
3). 在回调方法中实现逻辑


package com.example.activity;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
import com.google.android.material.textfield.TextInputEditText;
 
public class MainActivity extends Activity implements View.OnClickListener {
 
    private TextInputEditText main_message;
    private Button btn_main_start1;
    private Button btn_main_start2;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // 视图对象并初始化
        main_message = findViewById(R.id.et_main_message);
        btn_main_start1 = findViewById(R.id.btn_main_start1);
        btn_main_start2 = findViewById(R.id.btn_main_start2);
 
        // 给视图设置监听
        btn_main_start1.setOnClickListener(this);
        btn_main_start2.setOnClickListener(this);
    }
 
    // 在回调方法中实现逻辑
    @Override
    public void onClick(View view) { // view 就是发生(操作的)事件的视图对象
        if(view == btn_main_start1) {
            Toast.makeText(this, "一般启动", Toast.LENGTH_SHORT).show();
        } else if (view == btn_main_start2) {
            Toast.makeText(this, "带回调启动", Toast.LENGTH_SHORT).show();
        }
    }
}

实现一般启动

1). 定义好界面二
1). 布局
2). 定义Activity类
3). 配置
4). 重写onCreate(), 并加载布局
2). 启动界面二
1). 创建Intent对象(显式)
2). 通过intent携带额外数据
3). 启动Activity
4). 得到intent对象
5). 通过intent读取额外数据
6). 显示到TextInputEditText

配置清单


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activity_01">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Activity_01">
        <!--
            android:name: 配置全类名,com.example.activity_01.SecondActivity,可以将包名省略
            android:label: 定义一个Activity的,可以引用一个字符串(必须在string.xml中有定义),也可以直接写字符串,但不建议
            SecondActivity是由MainActivity(内部Activity)来启动访问的,所以SecondActivity不需要配置<intent-filter>
        -->
        <activity
            android:name=".SecondActivity"
            android:label="@string/second_activity_label"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

 总结

到此这篇关于Android四大组件之Activity详解的文章就介绍到这了,更多相关Android Activity组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯