Intent實現Activity的跳轉

2021-07-22 04:19:31 字數 2257 閱讀 6405

android中提供了intent機制來協助應用間的互動與通訊,intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,android則根據此intent的描述,負責找到對應的元件,將 intent傳遞給呼叫的元件,並完成元件的呼叫。

intent不僅可用於應用程式之間,也可用於應用程式內部的activity/service/broadcastreceiver之間的互動。也可以說---- intent是同乙個或不同的應用中的元件之間的訊息傳遞的媒介。因此,intent在這裡起著乙個**中介的作用,專門提供元件互相呼叫的相關資訊,實現呼叫者與被呼叫者之間的解耦。

簡而言之:intent用來啟用元件;攜帶資訊。

在sdk中給出了intent作用的表現形式為:

通過context.startactivity() oractivity.startactivityforresult() 啟動乙個activity;

通過 context.startservice() 啟動乙個服務,或者通過context.bindservice() 和後台服務互動;

context.sendbroadcast(),context.sendorderedbroadcast(),

context.sendstickybroadcast()) 發給broadcast receivers。

activity的跳轉需要建立intent物件,通過設定intent物件的引數指定要跳轉activity。activity跳轉一共有兩類:一類為顯式意圖;一類為隱式意圖。

通過設定activity的包名和類名實現跳轉,稱為顯式意圖

通過指定動作實現跳轉,稱為隱式意圖

顯式意圖

隱式意圖

要讓乙個activity可以被隱式啟動,那麼要在清單檔案中對跳轉到的activity(也就是twoactivity)進行配置。在清單檔案的activity節點中設定intent-filter子節點,並配置action和category。(如果不配置的話,只能被顯式啟動,如果配置了後,也可以被隱式啟動)

o action 指定動作:可以自定義,可以使用系統自帶的。

o data 指定資料:操作什麼內容。運算元據的字首必須是example

o category 類別:是為某一種類定義的,一般使用預設類別即可

隱式意圖跳轉至指定secondactivity

/**

* 隱式啟動secondactivity

*/public void click3(view v)

備註:當啟動activity的時候,系統會在所有清單檔案中尋找與我們建立的intent匹配的intent-filter,找到則啟動,找不到則拋異常

隱式意圖跳轉至指定的系統中的activity  

示例1:隱式跳轉至打**activity

/** * 隱式跳轉至打**activity

*/public void click4(view v)

**原始碼中的filter

示例2:跳轉撥號器介面

/*** 隱式啟動撥號器

*/public void click3(view v)

如果在清單檔案中定義data的時候,新增了android:mimetype,操作如下:

在**中就需要指定mimetype

public void click5(view v)
備註:settype和setdata 不能共存,所以要使用共存的setdataandtype方法。

案例:跳轉到瀏覽器怎麼做呢?

/**

* 顯式跳轉至瀏覽器

*/public void click6(view v)

/*** 隱式跳轉至瀏覽器

*/public void click7(view v)

當多個瀏覽器的時候,在顯式的時候,直接啟動了,只能啟動乙個瀏覽器;在隱式的時候,可以讓選擇。

應用場景

1、啟動同一應用中的activity,用顯式

2、啟動不同應用中的activity,用隱式

顯式啟動效率高於隱式

如果系統找到了多個intent-filter與程式設計師建立的intent匹配,那麼就會彈出對話方塊,列舉所有匹配的activity,讓使用者選擇。比如:手機上安裝多個瀏覽器時候。

listactivity與activity的區別

listactivity實際上是listview和activity的結合體。也就是說,乙個listactivity就是只包含乙個listview元件的activity。在listactivity類內部通過 來建立listview物件,因此,使用listactivity並不需要使用xml布局檔案來定義...

Intent實現頁面跳轉

設定文字內容 mytext.settext 我的第乙個textview 1.第乙個頁面 生成乙個intent物件 intent intent new intent 傳遞資料 intent.putextra text 123456 packagecontext當前頁面 cls 跳轉的也頁面 inten...

Intent 實現Activity跳轉

一 概述 用intent實現無返回和有返回的activity之間的跳轉 二 無返回的跳轉 firstactivity中 intent intent new intent firstactivity.this,secondactivity.class 傳遞資料到第二個activity startact...