網站首頁 編程語言 正文
理論概述
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>
?總結
原文鏈接:https://blog.csdn.net/huangjianfeng21/article/details/122180575
相關推薦
- 2022-08-03 C#中POST接口formdata傳參模板的記錄_C#教程
- 2022-05-04 基于Python中的turtle繪畫星星和星空_python
- 2022-05-24 C++基于Floyd算法實現校園導航系統_C 語言
- 2023-07-18 List集合循環刪除特殊元素之六種方法(實踐)
- 2022-04-01 kubeadm報錯:The connection to the server localhost:8
- 2022-09-27 React?函數式組件和類式組件詳情_React
- 2022-09-22 get方法和post方法的區別
- 2023-01-08 Python?flask與fastapi性能測試方法介紹_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支