返回顶部
首页 > 资讯 > 移动开发 >Android利用Intent启动和关闭Activity
  • 550
分享到

Android利用Intent启动和关闭Activity

intentactivityAndroid 2022-06-06 08:06:49 550人浏览 独家记忆
摘要

一、简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法,并在该方法的参数中传递Intent对象,就可以实

一、简介

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);
  }
 }
}
您可能感兴趣的文章:Android 关闭多个Activity的实现方法Android 侧滑关闭Activity的实例Android中Activity滑动关闭的效果Android仿微信activity滑动关闭效果Android实现退出时关闭所有Activity的方法android开发之关闭所有的activity的方法


--结束END--

本文标题: Android利用Intent启动和关闭Activity

本文链接: https://lsjlt.com/news/24790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android利用Intent启动和关闭Activity
    一、简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法,并在该方法的参数中传递Intent对象,就可以实...
    99+
    2022-06-06
    intent activity Android
  • Android Activity启动流程一:从Intent到Activity创建
    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、概览二、应用...
    99+
    2023-08-31
    android 面试 java activity 启动流程
  • Android仿微信activity滑动关闭效果
    Android仿微信activity滑动关闭功能 1.利用具体利用v4包下的slidingPaneLayout实现透明的activity,代码如下: BaseActivit...
    99+
    2022-06-06
    关闭 activity Android
  • rac 启动和关闭
    Oracle 10g时代,我们很羡慕那些懂得Oracle9i的DBA,而不知不觉中度过了Oracle11g并迎接了12c时代,但是还是有不少DBA习惯于Oracle 10g的管理思维,尤其是在管理...
    99+
    2024-04-02
  • 如何在Android中关闭Activity的滑动效果
    这篇文章将为大家详细讲解有关如何在Android中关闭Activity的滑动效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.第一个Activity:package com.ekegua...
    99+
    2023-05-31
    android activity roi
  • Android正在启动如何关闭
    要关闭正在启动的Android设备,您可以使用以下方法之一:1. 通过长按电源键:长按设备的电源键,直到出现关机或重启选项。然后选择关机选项,设备将关闭。2. 通过快捷菜单关闭:从设备屏幕的顶部向下滑动,以打开快捷菜单。在快捷菜单中,您...
    99+
    2023-08-09
    Android
  • Redis的启动和关闭(前台启动和后台启动)
    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 在上面安装好Redis后会在安装目...
    99+
    2015-01-14
    Redis的启动和关闭(前台启动和后台启动)
  • nginx怎么关闭、重启、和启动
    本篇内容主要讲解“nginx怎么关闭、重启、和启动”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx怎么关闭、重启、和启动”吧!关闭service nginx stop...
    99+
    2023-06-28
  • oracle 11g的启动和关闭
    Oracle 11g 启动和关闭startup nomount:打开数据库实例,此时读取参数文件,同时启动必须的后台进程,DBWR(数据库写进程)LGWR(日志写进程)SMON(系统监控进程)PMON(进程...
    99+
    2024-04-02
  • 【oracle11g】整体启动和关闭
    1.关闭数据库【默认orcl】 sqlplus /nolog conn sys/sys as sysdba; shutdown immediate;&nbs...
    99+
    2024-04-02
  • nginx如何启动和关闭
    要启动nginx,可以使用以下命令:```sudo systemctl start nginx```要关闭nginx,可以使用以下命...
    99+
    2023-10-08
    nginx
  • redis怎么启动和关闭
    redis启动和关闭指南 Redis是一个内存数据库,广泛用于缓存、消息传递和持久性存储等应用场景。本文将详细介绍如何启动和关闭Redis。 启动Redis 1. 确保安装Redis 在...
    99+
    2024-05-21
    redis 数据丢失
  • Android Intent启动别的应用实现方法
    我们知道Intent的应用,可以启动别一个Activity,那么是否可以启动别外的一个应用程序呢,答案是可以的。 1、首先我们新建一个Android应用,名为AnotherPr...
    99+
    2022-06-06
    方法 intent Android
  • Oracle数据库启动和关闭
    要了解Oracle数据库的启动和停止需要先了解“实例”(instance)和“数据库”(database)这两个名词的定义:数据库(database):物理操作系统文件或磁盘(disk)的集合。实例(ins...
    99+
    2024-04-02
  • linux怎么启动和关闭redis
    在Linux系统中,可以通过以下步骤来启动和关闭Redis: 启动Redis: 打开终端窗口,输入以下命令来启动Redis服务器:...
    99+
    2024-04-26
    redis linux
  • Android利用Intent读取和更新通讯录
    一、简介 本节演示如何在安卓系统中通过用户配置文件(user profile)读取和更新该手机的所有联系人信息,以及如何导航到用户配置文件中的这些联系人。 二、基本概念 &nb...
    99+
    2022-06-06
    更新 intent Android
  • Android adb命令 关闭app 和 启动app 还有重启app命令
    以下是Android中使用adb命令关闭应用程序、启动应用程序和重启应用程序的方法: 1.关闭应用程序 使用以下命令可以关闭正在运行的应用程序: adb shell am force-stop package_name 其中,package...
    99+
    2023-08-20
    android adb
  • MySQL中的启动和关闭命令
    目录一、Windws系统二、linux系统1.service命令2. /etc/init.d/mysql3.mysqld命令4.mysqld_safe命令5.mysqld_multi命令6.mysqladmin命令7.杀...
    99+
    2022-08-17
    MySQL启动命令 MySQL关闭命令 MySQL命令
  • Oracle 11g 数据库启动和关闭
    Oracles11数据库的启动状态Oracle11g在启动的时候必须经过三个状态:NOMOUNT,MOUNT,OPEN。NOMOUNT: 此状态下只打开数据库实例,读取参数文件。MOUNT: 根据参数文件信...
    99+
    2024-04-02
  • Oracle DB 开机自启动和关闭
    参考http://docs.oracle.com/database/122/UNXAR/stopping-and-starting-oracle-software.htm#UNXAR417 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作