
一、简介
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】按钮后的运行截图。
@H_301_97@
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); } }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android利用Intent启动和关闭Activity全部内容,希望文章能够帮你解决Android利用Intent启动和关闭Activity所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)