Android:Intent介紹 & 使用方法
前言
Intent在Android開發的應用非常常見,今天我就帶給大家簡單講一下Intent的相關知識及其用法。
目錄
1. 定義
意圖,描述的是應用的動作 & 其對應的資料
2. 作用
- 指定當前元件要完成的動作
- 在
Android
不同元件間 傳遞資料
Activity
、Service
、BroadcastReceiver
之間的通訊載體 =Intent
下面,將根據Intent
的作用,詳細講解其使用方法
3. 使用1:指定當前元件要完成的動作
該使用 分為顯式 & 隱式意圖:
3.1 顯式意圖
特點
明確指定需啟動的元件名即 顯式
Intent
不需 解析Intent
則可直接啟動目標元件具體使用
明確指定元件名的方式:呼叫Intent
的構造方法、Intent.setComponent()
、Intent.setClass()
例項說明
// 使FirstActivity啟動SecondActivity(通過按鈕)
mybutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 1. 例項化顯式Intent & 通過建構函式接收2個引數
// 引數1 = Context:啟動活動的上下文,一般為當前Activity
// 引數2 = Class:是指定要啟動的目標活動
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
// 2. 通過Activity類的startActivity()執行該意圖操作(接收一個Intent物件)
// 將構建好的Intent物件傳入該方法就可啟動目標Activity
startActivity (intent);
}
});
3.2 隱式意圖
特點
無明確指定需啟動的元件名,但 指定了需啟動元件需滿足的條件即 隱式
Intent
需 解析Intent
,才可啟動目標元件具體使用
通過AndroidManifest.xml
檔案下的<Activity>
標籤下的<intent -filter>
宣告 需 匹配的條件一個
<Activity>
標籤下可以有多組,只需匹配其中1組即可詳細說明
宣告條件含:動作(Action
)、型別(Category
)、資料(Data
)
- 例項說明
// 使FirstActivity啟動SecondActivity(通過按鈕)
mybutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 1. 例項化1個隱式Intent物件,並指定action引數
Intent intent = new Intent("android.intent.action.ALL_APPS");
// 2. 呼叫Intent中的addCategory()來新增一個category
// 注:每個Intent中只能指定1個action,但卻能指定多個category
intent.addCategory("com.example.intent_test.MY_CATEGORY");
startActivity (intent);
}
});
// 為使SecondActivity能繼續響應該Intent
// 我們需在AndroidManifest.xml檔案下的<Activity>標籤下配置<intent -filter>的內容
<intent-filter >
<action android:name="android.intent.action.ALL_APPS"/>
<category android:name="android.intent.category.DEFAULT">
</category>
<category android:name="com.example.intent_test.MY_CATEGORY"/>
</intent-filter>
4. 使用2:不同元件間 傳遞資料
使用方法
在當前Activity
把要傳遞的資料暫存在Intent
中(通過PutExtra()
)、在新啟動的Activity
中取出Intent中的資料可傳遞的資料型別
a. 8種基本資料型別(boolean byte char short int long float double
)、String
b.Intent
、Bundle
c.Serializable
物件、Parcelable
及其對應陣列、CharSequence
型別
d.ArrayList
,泛型引數型別為:<Integer>
、<? Extends Parcelable>
、<Charsequence>
、<String>
例項
// a. 資料傳遞程式碼
// 目的:將FristActivity中的一個字串傳遞到SecondActivity中,並在SecondActivity中將Intent物件中的資料(FristActivity傳遞過來的資料)取出
// 實現程式碼及解析
mybutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new
//使用顯示Intent的方式來啟動SecondActivity;
Intent(FirstActivity.this,SecondActivity.class);
String data = "I com from FirstActivity";
//通過putExtra()方法傳遞一個字串到SecondActivity;
//putExtra()方法接收兩個引數:第一個是鍵,第二個是值,代表真正要傳遞的資料。
intent.putExtra("extra_data",data);
startActivity(intent);
}
});
// b. 資料取出程式碼
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// 呼叫getInstent()方法獲取用於啟動SecondActivit的Intent
Intent intent = getIntent();
// 呼叫getStringExtra()方法,傳入相應的鍵名,就可以得到傳來的資料。
String data = intent.getStringExtra("data");
}
}
5. 總結
- 本文對
Android
中的Intent元件進行了全面的介紹 - 接下來我將繼續介紹
Android
開發中的相關知識,有興趣可以繼續關注Carson_Ho的安卓開發筆記
請幫頂 / 評論點贊!因為你的鼓勵是我寫作的最大動力!
相關推薦
Android:Intent介紹 & 使用方法
前言 Intent在Android開發的應用非常常見,今天我就帶給大家簡單講一下Intent的相關知識及其用法。 目錄 1. 定義 意圖,描述的是應用的動作 &
Android:Tab切換方法整理
一、TabHost實現Tab切換 TabHost是整個Tab的容器,包含TabWidget和FrameLayout兩個部分,TabWidget是每個Tab的表情,FrameLayout是Tab內容。 實現方式有兩種: 1、繼承TabActivity 2、繼承Activi
Android:關於 Intent元件的那些小事(介紹、使用方法等)
前言 Intent在Android開發的應用非常常見 今天我就帶給大家簡單講一下Intent的相關知識 & 其用法 目錄 1. 定義 意圖,描述的是應用的動作 & 其對應的資料
Android零基礎入門第80節:Intent 屬性詳解(下)
gre save top log 單選按鈕 bar 手機 彩信 ttext 上一期學習了Intent的前三個屬性,本期接著學習其余四個屬性,以及Android系統常用內置組件的啟動。 四、Data和Type屬性 Data屬性通常用於向Action屬性提
Android項目實戰(十一):moveTaskToBack(boolean ) 方法的使用
android項目 androi ID cti 項目實戰 htm www style 順序 原文:Android項目實戰(十一):moveTaskToBack(boolean ) 方法的使用當你開發的程序被按後退鍵退出的時候, 你肯定不想讓他就這麽被finish()吧,那麽
Android筆記02:Intent機制詳解
tar 中一 定義 tty 一段 AI new 例如 pac 一、什麽是Intent? Intent在Android中提供了Intent機制來協助應用間的交互與通訊,Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的
Android中Intent傳值的幾種方法
1.使用putextra Intent intent = new Intent(); intent.putExtra("test","asdf"); intent.se
Vue:與android做通訊,android呼叫WebAPP JS方法
這幾天遇到個需求,沒搞過頭大的很! Web給android提供一個呼叫方法供android呼叫並返回android引數。 首先最重要的是要將函式掛載到window裡去,這裡是最懵的地方。 Android.getClient(msg) 在Vue專案裡呼叫是會報錯,不過沒關係
Android:JNI呼叫C++自定義類的詳細方法
一般情況下,我們都是用 JNI 呼叫 C++ 的某個方法的程式碼,包括直接使用 android studio 生成的程式碼也是如此。但有時我們需要新建、或者得到的是 C++ 的一個自定義類,在呼叫時就不能像呼叫 C++ 方法那樣了,查閱了一部分其他人的部落格,寫的都比較籠統、模糊,對沒接觸過這塊知識
Android中Intent傳遞物件的兩種方法(Serializable,Parcelable)
今天要給大家講一下Android中Intent中如何傳遞物件,就我目前所知道的有兩種方法,一種是Bundle.putSerializable(Key,Object);另一種是Bundle.putParcelable(Key, Object);當然這些Object是有一定的條件
java--ArrayList泛型:使用ArrayList泛型新增5個學生物件, 然後遍歷列印5位學生的自我介紹方法。
import java.util.ArrayList; import java.util.List; /** * 使用ArrayList泛型新增5個學生物件,然後遍歷列印5位學生的自我介紹方法。 * (需建立學生類)Student.java包含 name,age,gen
Android中Intent傳遞類物件的方法一(Serializable)
Activity之間通過Intent傳遞值,支援基本資料型別和String物件及它們的陣列物件byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、
Android非同步處理二:AsynTask介紹和使用AsyncTask非同步更新UI介面
(1)AsyncTask的介紹 通過上圖中的AsyncTask的原始碼結構圖可以看到,主要用於過載的方法是doInBackground(),onPreExecute()、onPostExecute()、onProgressUpdate()、onCanc
JSON介紹及Android最全面解析方法(Gson、AS自帶org.son、Jackson解析)
前言 今天,我們來介紹一下現今主流的資料交換格式-JSON! 目錄 定義 JavaScript Object Notation,JavaScript的物件表示法,是一種輕量級的文字資料交換格式。 作用 用於資料的標記、儲存
Design Patterns in Android:模板方法模式
前言 今天給大家分享的是《設計模式Android篇:模板方法模式》。 其實有一定開發經驗的小夥伴已經不自覺的使用了模板方法了,今天將通過Android原始碼和Android開發案例跟大家講解什麼是模板方法模式。 點選此處檢視《Design Patt
Android:在Eclipse下開發android應用產生的問題及解決方法
總結下,新手在使用eclipse開發android過程中可能遇到的一些問題。 1、升級sdk後遇到的問題:Unable to execute dex: java.nio.BufferOverflowException. 具體資訊如下: Unable to execute d
Android:常用佈局介紹 & 屬性設定大全
前言 在 Android開發中,繪製UI時常需各種佈局 今天,我將全面介紹Android開發中最常用的五大布局 含 Android Studio 2.2中新增的佈局:約束佈局(Const
Android碎片例項化方法:instantiate的使用及其原始碼解析
正常是通過呼叫碎片的空的構造方法來例項化一個碎片物件,但是這不利於同時管理一批碎片的情況,因為開閉原則的需要,正常的例項方法根本滿足不了。 這裡用的是instantiate 使用方法,通過傳入不同的碎片類名例項化。 Fragment fragment = Fragmen
Android修改包名 方法一:Rename方法,手動修改
下面介紹在Android studio中手動修改包名的方法: 1、點選 工程結構旁邊的小齒輪,將紅色部分那一串字元前的對勾去掉。 變化之後的結構為 2、在想要修改的那個包層級上 右鍵
Android:新浪微博拉起客戶端分享——完美實現同時分享圖片和文字(Intent.ACTION_SEND)
新浪微博拉起客戶端分享——完美實現同時分享圖片和文字(Intent.ACTION_SEND) 點選事件後處理: private void share(String content, Uri uri){