編輯:關於Android編程
一、簡介
Android應用程序中一般都有多個Activity,在Activity中,通過調用StartActivity方法,並在該方法的參數中傳遞Intent對象,就可以實現不同Activity之間的切換和數據傳遞。
通過StartActivity方法傳遞intent對象來啟動另一個Activity時,可分為兩類:
l 顯式啟動:在創建的Intent對象中明確指定啟動的是哪個Activity;
l 隱式啟動:安卓系統根據Intent的動作和數據決定應該啟動哪個Activity。
1、顯式啟動Activity
通過Intent顯式啟動一個Activity時,必須先創建一個Intent對象,並在該對象的構造函數中指明要啟動的目標組件名。例如:
var intent = new Intent(this, typeof(Activity1)); StartActivity(intent);
在這種情況下,除了intent對象以外,沒有其他方式可以匹配組件名。
2、隱式啟動Activity
隱式啟動Activity是指Android系統根據過濾規則自動去匹配對應的Intent,即不需要在Intent對象中明確指明啟動的是哪個Activity,而是讓Android系統來決定應該啟動誰。在這種情況下,Android系統會自動匹配最適合處理intent的一個或多個Activity。匹配的Activity可能是應用程序自身的,也可能是Android系統內置的,還可能是第3方應用程序提供的。因此,隱式啟動這種方式更強調了Android應用程序中組件的復用性。
注意,如果希望讓你的程序通過Activity展示某些動作,例如打電話、發郵件、發短信,或者使用activity中的數據等。這時候,首先考慮調用系統提供的功能去實現(即:隱式啟動Activity的方式)。在這種情況下,只需要通過Intent指定相應的動作即可,這是intent真正體現其價值的地方。例如:
var call = new Intent(Intent.ActionCall); //初始化一個電話呼叫 call.SetData(Android.Net.Uri.Parse("tel:13811112222")); StartActivity(call);
下面是常用的一些動作常量:
注意:用C#表示這些動作常量時,鍵入“Intent.”然後選擇一個常量即可。這些可選擇的常量去掉了分隔單詞的下劃線,並將每個單詞的首字母改為大寫,其他字母改為小寫,例如:Intent.ActionCall。
除了指定相應的動作以外,還可以同時指定Uri,這種情況下,Android會調用內置的浏覽器來隱式啟動一個Activity。例如:
Intent intent=new Intent(Intent.ActionView, Uri.Parse("http://www.google.com");
StartActivity(intent);
3、關閉Activity
調用Finish()可終止activity。也可以調用FinishActivity() 來終止你之前啟動了的一個獨立的activity。
記住:顯式關閉Activity僅用於你絕對不想讓用戶再返回這個activity的實例的情況。多數情況下,都不應該顯式調用Finish()或者FinishActivity()來關閉acitivity,而是應該讓系統為你去管理它。 二、示例—ch1201IntentDemo
該例子演示如何通過Intent撥打電話,以及如何啟動另一個Activity。
本例子需要應用程序具有“CALL_PHONE”權限。
1、運行截圖
運行前先在模擬器中添加一些聯系人及其電話號碼(模擬器本身有這個功能,直接在模擬器中操作即可),然後再測試要撥出的號碼。
下面左圖是該例子的主界面,右圖是單擊【打電話】按鈕後,在第2個界面中撥出的電話號碼截圖。
下圖是單擊【轉到活動1】按鈕後的運行截圖。
2、主要設計步驟
(1)添加“CALL_PHONE”權限
在【解決方案資源管理器】中,鼠標雙擊項目的【Properties】進入下面的界面,然後勾選“CALL_PHONE”選項:
設置後,系統就會自動在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="轉到活動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); } } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
Widget引入 我們可以把Widget理解成放置在桌面上的小組件(掛件),有了Widget,我們可以很方便地直接在桌面上進行各種操作,例如播放音樂。 
綜述 在Android中,我們需要進行一些耗時的操作,會將這個操作放在子線程中進行。在子線程操作完成以後我們可以通過Handler進行發送消息,通知UI進行一些更新操作
前言回過頭來審視之前做過的Android項目,發覺自己重新開發時忽然間不知所措了,間隔了太長時間沒有開發導致自己的Android技能知識急劇下降。溫故而知新。廢話少說,進
前言Android內置webkit內核的高性能浏覽器,而WebView則是在這個基礎上進行封裝後的一個 控件,WebView直譯網頁視圖,我們可以簡單的看作一個可以嵌套到