1. 程式人生 > >Android:Intent介紹 & 使用方法

Android:Intent介紹 & 使用方法

前言

Intent在Android開發的應用非常常見,今天我就帶給大家簡單講一下Intent的相關知識及其用法。

目錄

示意圖

1. 定義

意圖,描述的是應用的動作 & 其對應的資料

2. 作用


  1. 指定當前元件要完成的動作
  2. Android 不同元件間 傳遞資料

ActivityServiceBroadcastReceiver之間的通訊載體 = 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. IntentBundle
    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的安卓開發筆記

請幫頂 / 評論點贊!因為你的鼓勵是我寫作的最大動力!

相關推薦

AndroidIntent介紹 & 使用方法

前言 Intent在Android開發的應用非常常見,今天我就帶給大家簡單講一下Intent的相關知識及其用法。 目錄 1. 定義 意圖,描述的是應用的動作 &

AndroidTab切換方法整理

一、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筆記02Intent機制詳解

tar 中一 定義 tty 一段 AI new 例如 pac 一、什麽是Intent? Intent在Android中提供了Intent機制來協助應用間的交互與通訊,Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的

AndroidIntent傳值的幾種方法

1.使用putextra    Intent intent = new Intent(); intent.putExtra("test","asdf"); intent.se

Vueandroid做通訊,android呼叫WebAPP JS方法

這幾天遇到個需求,沒搞過頭大的很! Web給android提供一個呼叫方法供android呼叫並返回android引數。 首先最重要的是要將函式掛載到window裡去,這裡是最懵的地方。 Android.getClient(msg)  在Vue專案裡呼叫是會報錯,不過沒關係

AndroidJNI呼叫C++自定義類的詳細方法

一般情況下,我們都是用 JNI 呼叫 C++ 的某個方法的程式碼,包括直接使用 android studio 生成的程式碼也是如此。但有時我們需要新建、或者得到的是 C++ 的一個自定義類,在呼叫時就不能像呼叫 C++ 方法那樣了,查閱了一部分其他人的部落格,寫的都比較籠統、模糊,對沒接觸過這塊知識

AndroidIntent傳遞物件的兩種方法(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

AndroidIntent傳遞類物件的方法一(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){