android 如何关闭intent,Android利用Intent启动和关闭Activity

一、简介

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);

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

26db24dbc673834c88472e0873750157.png

注意:用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个界面中拨出的电话号码截图。

7d2745d5a339b9cd476270d90b58ff25.png

3f297611351ae75db10b183299145354.png

下图是单击【转到活动1】按钮后的运行截图。

0f563cfe799fdae0fba1e4387dedc1b8.png

2、主要设计步骤

(1)添加“call_phone”权限

在【解决方案资源管理器】中,鼠标双击项目的【properties】进入下面的界面,然后勾选“call_phone”选项:

467609c6245045bc8a00b027f034f134.png

设置后,系统就会自动在androidmanifest.xml中添加下面的代码:

(2)添加ch1201_main.axml

在resources\layout文件夹下添加该文件,模板选择【layout】:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:id="@+id/btn1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="打电话" />

android:id="@+id/btn2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="转到活动1" />

(3)添加ch1201_layout1.axml

在resources\layout文件夹下添加该文件,模板选择【layout】:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

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" />

(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(resource.id.btn1).click += delegate

{

var call = new intent(intent.actioncall);

call.setdata(android.net.uri.parse("tel:13811112222"));

startactivity(call);

};

//启动自定义的activity

findviewbyid(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);

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值