1. 程式人生 > >使用Intent實現頁面跳轉

使用Intent實現頁面跳轉

本節引言:

在上一節結束後意味著Android的四大元件我們都已經學習完畢了~,而本節我們要學習的是四大元件間的 樞紐——Intent(意圖),Android通訊的橋樑,比如我們可以通過:

  • startActivity(Intent)/startActivityForResult(Intent):來啟動一個Activity
  • startService(Intent)/bindService(Intent):來啟動一個Service
  • sendBroadcast:傳送廣播到指定BroadcastReceiver
  • 另外別忘了我們在註冊四大元件時,寫得很多的Intent-Filter
    哦~

好吧,話不多說,開始本節內容!另外前面我們已經用過Intent了,就不在講述概念性的東西了~ 老規矩,官方API:Intent

1.顯式Intent與隱式Intent的區別

  • 顯式Intent:通過元件名指定啟動的目標元件,比如startActivity(new Intent(A.this,B.class)); 每次啟動的元件只有一個~
  • 隱式顯式Intent:不指定元件名,而指定Intent的Action,Data,或Category,當我們啟動元件時, 會去匹配AndroidManifest.xml相關元件的Intent-filter,逐一匹配出滿足屬性的元件,當不止一個滿足時, 會彈出一個讓我們選擇啟動哪個的對話方塊~

2.Intent的七個屬性:

1)ComponentName(元件名稱)

2)Action(動作)

3)Category(類別)

4)Data(資料),Type(MIME型別)

此處輸入圖片的描述

5)Extras(額外)

6)Flags(標記)

3.顯式Intent使用示例:

這個用得很多,直接就上例子了:

例子1:點選按鈕返回Home介面: 執行效果圖:

核心程式碼:

Intent it =newIntent();
it.setAction(Intent
.ACTION_MAIN); it.addCategory(Intent.CATEGORY_HOME); startActivity(it);

例子2:點選按鈕開啟百度頁面: 執行效果圖:

核心程式碼:

Intent it =newIntent();
it.setAction(Intent.ACTION_VIEW);
it.setData(Uri.parse("http://www.baidu.com"));
startActivity(it);

4.隱式Intent詳解

1)預定義動作的隱式Intent示例:

程式碼示例:點選按鈕後,所有Action為VIEW的Activity被篩選出來,由使用者進一步選擇:

核心程式碼:

建立第二個Activity的佈局,與對應的Activity,在第一個Activity的按鈕點選事件中新增一下程式碼:

Intent it =newIntent();
it.setAction(Intent.ACTION_VIEW);
startActivity(it);

最後在第二個Activity的Intent中新增以下程式碼:

<activityandroid:name=".SecondActivity"android:label="第二個Activity"><intent-filter><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></activity>

執行效果圖:

2)自定義動作的隱式Intent示例:

程式碼示例:使用自定義的Action與category來啟用另一個Activity

核心程式碼: 建立第二個Activity的佈局,與對應的Activity,在第一個Activity的按鈕點選事件中新增一下程式碼:

Intent it =newIntent();
it.setAction("my_action");
it.addCategory("my_category");
startActivity(it);

最後在第二個Activity的Intent中新增以下程式碼:

<activityandroid:name=".SecondActivity"android:label="第二個Activity"><intent-filter><actionandroid:name="my_action"/><categoryandroid:name="my_category"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></activity>

注意雖然我們自定義了一個category,但是還是要把這個預設的加上,不然會報錯的:

<categoryandroid:name="android.intent.category.DEFAULT"/>

5.常用系統Intent合集

大家貼下常用的系統Intent的合集吧,上面沒有的歡迎提出~

//===============================================================//1.撥打電話// 給移動客服10086撥打電話Uri uri =Uri.parse("tel:10086");Intent intent =newIntent(Intent.ACTION_DIAL, uri);
startActivity(intent);//===============================================================//2.傳送簡訊// 給10086傳送內容為“Hello”的簡訊Uri uri =Uri.parse("smsto:10086");Intent intent =newIntent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body","Hello");
startActivity(intent);//3.傳送彩信(相當於傳送帶附件的簡訊)Intent intent =newIntent(Intent.ACTION_SEND);
intent.putExtra("sms_body","Hello");Uri uri =Uri.parse("content://media/external/images/media/23");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png");
startActivity(intent);//===============================================================//4.開啟瀏覽器:// 開啟百度主頁Uri uri =Uri.parse("http://www.baidu.com");Intent intent  =newIntent(Intent.ACTION_VIEW, uri);
startActivity(intent);//===============================================================//5.傳送電子郵件:(閹割了Google服務的沒戲!!!!)// 給[email protected]發郵件Uri uri =Uri.parse("mailto:[email protected]");Intent intent =newIntent(Intent.ACTION_SENDTO, uri);
startActivity(intent);// 給[email protected]發郵件傳送內容為“Hello”的郵件Intent intent =newIntent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL,"[email protected]");
intent.putExtra(Intent.EXTRA_SUBJECT,"Subject");
intent.putExtra(Intent.EXTRA_TEXT,"Hello");
intent.setType("text/plain");
startActivity(intent);// 給多人發郵件Intent intent=newIntent(Intent.ACTION_SEND);String[] tos ={"[email protected]","[email protected]"};// 收件人String[] ccs ={"[email protected]","[email protected]"};// 抄送String[] bccs ={"[email protected]","[email protected]"};// 密送
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_SUBJECT,"Subject");
intent.putExtra(Intent.EXTRA_TEXT,"Hello");
intent.setType("message/rfc822");
startActivity(intent);//===============================================================//6.顯示地圖:// 開啟Google地圖中國北京位置(北緯39.9,東經116.3)Uri uri =Uri.parse
            
           

相關推薦

使用Intent實現頁面

本節引言: 在上一節結束後意味著Android的四大元件我們都已經學習完畢了~,而本節我們要學習的是四大元件間的 樞紐——Intent(意圖),Android通訊的橋樑,比如我們可以通過: startActivity(Intent)/startAc

intent實現頁面閃退

主頁面實現跳轉的語句: btn_query_goto.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent inte

實現頁面——Intent

Intent可以理解為信使(意圖),由Intent來協作完成Android各個元件之間的通訊。 Intent實現頁面跳轉 1.直接實現A頁面跳轉到B頁面:startActivity(intent) 2.直接A啟動B頁面,切B頁面可以把資料回傳給A:startActivi

安卓——Intent實現頁面的兩種方法)

下圖中兩個不同的方法就是兩種頁面之間跳轉的情況1>跳轉不返回資料2>跳轉返回資料例項:第一種啟動方式(跳轉不返回資料)第二種啟動方式(跳轉返回資料)先看第一種:點選第一種啟動方式按鈕會出現右邊的圖,然後再點選Button按鈕返回左邊的介面,TextView中的內容

php中實現頁面的幾種方式

腳本 timeout location clas replace asc idt lee 實現 親測,not復制粘貼 PHP中實現頁面跳轉有一下幾種方式,看了幾個人寫的不是很條理,自己整理一下 在PHP腳本代碼中實現 <?php header("locati

ui li 形式的菜單 實現頁面

頁面跳轉 app /*跳轉*/ jumpEditRectificatBill:function(){ $("#getEquipLegerFrom li").each(function(){ //var jumpid=$(this).attr("id")

用js實現頁面的幾種方式

head 註意 ont rem text pla http bsp cat 通過js或者html或者PHP等動態程序都可以方便的實現跳轉,這裏搜集了幾種頁面跳轉的方式js方式的頁面跳轉1.window.location.href方式 <script langua

ASP.NET MVC中如何實現頁面

pub ring 項目 再見 name ati 方法 技術 mod 1,最簡單的方式:超鏈接 以下分別是連接到HomeController控制器下的SharpL動作方法,以及百度首頁。代碼如下: 1 <a href="Home\SharpL">打開S

php實現頁面方法彙總

一共有三種方法實現頁面跳轉,分別利用php提供的header()、html meta標籤、JavaScript指令碼。 header() header()方法通過設定http響應頭中的location域實現跳轉。這種跳轉實現對使用者是不可見的,有瀏覽器直接執行

Axure中實現頁面倒計時

在瀏覽一個頁面時,如果跳轉到下一個頁面,一般需要等待幾秒,有些網站就會產生倒計時等待的狀態,這樣一個效果暫且稱為Axure頁面跳轉倒計時。在Axure(http://www.axurechina.cc/)中要實現這樣一個效果需要用到幾個簡單的互動效果,以下將是具體操作流程。關於頁面跳轉的設定

AngularJS進階 八 實現頁面並進行參數傳遞

res 初始化 .get web js進階 頁面 city 過程 元素 angularjs實現頁面跳轉並進行參數傳遞 註:請點擊此處進行充電! Angular頁面傳參有多種辦法,我在此列舉4種最常見的: 1. 基於ui-router的頁面跳轉傳參 (1) 在Angular

AngularJS進階 八 實現頁面並進行引數傳遞

angularjs實現頁面跳轉並進行引數傳遞 注:請點選此處進行充電! Angular頁面傳參有多種辦法,我在此列舉4種最常見的: 1. 基於ui-router的頁面跳轉傳參 (1) 在AngularJS的app.js中用ui-router定義路由,比如現在

微信小程式例子——點選文字實現頁面

1、效果展示 .w 2、關鍵程式碼 index.js檔案 Page({ data:{ // text:"這是一個頁面" }, onLoad:function(options){

使用AJAX實現頁面

$.ajax({ type:"POST", url: //你的請求程式頁面隨便啦 async:false,//同步:意思是當有返回值以後才會進行後面的js程式。 dat

Springboot中使用thymeleaf模板引擎實現頁面

1、建立一個Springboot專案2、在pom.xml中加入thymeleaf模板引擎的依賴 <!-- springboot web開發thymeleaf模板 --> <depend

Java後端實現頁面

頁面跳轉分類有兩種:重定向和轉發,即redirect和forward。具體區別和含義最後介紹,先給出使用方法。一:重定向redirect    第一種方式:controller中返回值為Stringpublic String login(HttpServletRequest

Vue整合vue-router實現頁面出現的問題

1、配置router資料夾下index.js,配置方式一 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const routes = [ { path: '/', // 首頁

Laravel通過ajax的POST方式傳值並實現頁面

1.新增測試按鈕 <button class='test' >ajax測試</button> 2.ajax部分程式碼 @section('js') <scr

vue三種不同方式實現頁面

Vue:router-lin <router-link to="/">[跳轉到主頁]</router-link> <router-link to="/login">[登入]</router-link> <router-li

js實現頁面選單選中

<div class="headerpanel"> <div class="headerlist"> <ul> <li class="active" role="cashierMenu