小编给大家分享一下Android中Activity有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
理论概述
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). 启动Activity4). 得到intent对象5). 通过intent读取额外数据6). 显示到EditText4. 实现一般返回: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有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!