最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android利用Intent啟動和關(guān)閉Activity

 更新時間:2016年06月15日 15:33:07   作者:rainmj  
這篇文章主要為大家詳細介紹了Android利用Intent啟動和關(guān)閉Activity的相關(guān)操作,感興趣的小伙伴們可以參考一下

一、簡介

Android應(yīng)用程序中一般都有多個Activity,在Activity中,通過調(diào)用StartActivity方法,并在該方法的參數(shù)中傳遞Intent對象,就可以實現(xiàn)不同Activity之間的切換和數(shù)據(jù)傳遞。

通過StartActivity方法傳遞intent對象來啟動另一個Activity時,可分為兩類:

l 顯式啟動:在創(chuàng)建的Intent對象中明確指定啟動的是哪個Activity;

l 隱式啟動:安卓系統(tǒng)根據(jù)Intent的動作和數(shù)據(jù)決定應(yīng)該啟動哪個Activity。

1、顯式啟動Activity

通過Intent顯式啟動一個Activity時,必須先創(chuàng)建一個Intent對象,并在該對象的構(gòu)造函數(shù)中指明要啟動的目標組件名。例如:

var intent = new Intent(this, typeof(Activity1));

StartActivity(intent);

在這種情況下,除了intent對象以外,沒有其他方式可以匹配組件名。

2、隱式啟動Activity

隱式啟動Activity是指Android系統(tǒng)根據(jù)過濾規(guī)則自動去匹配對應(yīng)的Intent,即不需要在Intent對象中明確指明啟動的是哪個Activity,而是讓Android系統(tǒng)來決定應(yīng)該啟動誰。在這種情況下,Android系統(tǒng)會自動匹配最適合處理intent的一個或多個Activity。匹配的Activity可能是應(yīng)用程序自身的,也可能是Android系統(tǒng)內(nèi)置的,還可能是第3方應(yīng)用程序提供的。因此,隱式啟動這種方式更強調(diào)了Android應(yīng)用程序中組件的復(fù)用性。

注意,如果希望讓你的程序通過Activity展示某些動作,例如打電話、發(fā)郵件、發(fā)短信,或者使用activity中的數(shù)據(jù)等。這時候,首先考慮調(diào)用系統(tǒng)提供的功能去實現(xiàn)(即:隱式啟動Activity的方式)。在這種情況下,只需要通過Intent指定相應(yīng)的動作即可,這是intent真正體現(xiàn)其價值的地方。例如:

var call = new Intent(Intent.ActionCall); //初始化一個電話呼叫

call.SetData(Android.Net.Uri.Parse("tel:13811112222"));

StartActivity(call);

下面是常用的一些動作常量:

注意:用C#表示這些動作常量時,鍵入“Intent.”然后選擇一個常量即可。這些可選擇的常量去掉了分隔單詞的下劃線,并將每個單詞的首字母改為大寫,其他字母改為小寫,例如:Intent.ActionCall。

除了指定相應(yīng)的動作以外,還可以同時指定Uri,這種情況下,Android會調(diào)用內(nèi)置的瀏覽器來隱式啟動一個Activity。例如:

Intent intent=new Intent(Intent.ActionView, Uri.Parse("http://www.google.com");

StartActivity(intent);

3、關(guān)閉Activity

調(diào)用Finish()可終止activity。也可以調(diào)用FinishActivity() 來終止你之前啟動了的一個獨立的activity。

記?。?/strong>顯式關(guān)閉Activity僅用于你絕對不想讓用戶再返回這個activity的實例的情況。多數(shù)情況下,都不應(yīng)該顯式調(diào)用Finish()或者FinishActivity()來關(guān)閉acitivity,而是應(yīng)該讓系統(tǒng)為你去管理它。 二、示例—ch1201IntentDemo

該例子演示如何通過Intent撥打電話,以及如何啟動另一個Activity。

本例子需要應(yīng)用程序具有“CALL_PHONE”權(quán)限。

1、運行截圖

運行前先在模擬器中添加一些聯(lián)系人及其電話號碼(模擬器本身有這個功能,直接在模擬器中操作即可),然后再測試要撥出的號碼。

下面左圖是該例子的主界面,右圖是單擊【打電話】按鈕后,在第2個界面中撥出的電話號碼截圖。

下圖是單擊【轉(zhuǎn)到活動1】按鈕后的運行截圖。

2、主要設(shè)計步驟

(1)添加“CALL_PHONE”權(quán)限

在【解決方案資源管理器】中,鼠標雙擊項目的【Properties】進入下面的界面,然后勾選“CALL_PHONE”選項:

設(shè)置后,系統(tǒng)就會自動在AndroidManifest.xml中添加下面的代碼:

<uses-permission android:name="android.permission.CALL_PHONE" />

(2)添加ch1201_Main.axml

在Resources\layout文件夾下添加該文件,模板選擇【Layout】:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <Button
  android:id="@+id/btn1"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="打電話" />
 <Button
  android:id="@+id/btn2"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="轉(zhuǎn)到活動1" />
</LinearLayout>

 (3)添加ch1201_Layout1.axml

在Resources\layout文件夾下添加該文件,模板選擇【Layout】:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <TextView
  android:text="這是活動1的界面\n\n提示:按【Back】按鈕返回"
  android:textAppearance="?android:attr/textAppearanceLarge"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/textView1"
  android:layout_gravity="center"
  android:layout_margin="30dp" />
</LinearLayout>

 (4)添加ch1201IntentDemoMain.cs

在SrcDemos文件夾下添加該文件,模板選擇【Activity】:

using Android.App;
using Android.Content;
using Android.OS;
using Android.Widget;

namespace MyDemos.SrcDemos
{
 [Activity(Label = "【例12-1】Intent基本用法1")]
 public class ch1201IntentDemoMain : Activity
 {
  protected override void OnCreate(Bundle savedInstanceState)
  {
   base.OnCreate(savedInstanceState);
   SetContentView(Resource.Layout.ch1201_Main);

   //啟動電話撥號的Activity
   FindViewById<Button>(Resource.Id.btn1).Click += delegate
   {
    var call = new Intent(Intent.ActionCall);
    call.SetData(Android.Net.Uri.Parse("tel:13811112222"));
    StartActivity(call);
   };

   //啟動自定義的Activity
   FindViewById<Button>(Resource.Id.btn2).Click += delegate
   {
    var intent = new Intent(this, typeof(ch1201IntentDemoActivity1));
    StartActivity(intent);
   };
  }
 }
}

 (5)添加ch1201IntentDemoActivity1.cs

在SrcDemos文件夾下添加該文件,模板選擇【Activity】:

using Android.App;
using Android.OS;

namespace MyDemos.SrcDemos
{
 [Activity(Label = "【例12-1】Intent基本用法1")]
 public class ch1201IntentDemoActivity1 : Activity
 {
  protected override void OnCreate(Bundle savedInstanceState)
  {
   base.OnCreate(savedInstanceState);
   SetContentView(Resource.Layout.ch1201_Layout1);
  }
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

杨浦区| 乳源| 循化| 舞钢市| 微山县| 曲松县| 黑水县| 山西省| 阿克苏市| 上犹县| 石狮市| 宜君县| 安吉县| 绥芬河市| 宣汉县| 渭南市| 调兵山市| 洞头县| 永春县| 吴江市| 宝应县| 平昌县| 丹江口市| 望城县| 舒兰市| 彰化县| 延长县| 临洮县| 小金县| 犍为县| 凌海市| 岗巴县| 高安市| 本溪市| 鹿泉市| 新郑市| 庄浪县| 治县。| 隆安县| 郓城县| 禄丰县|