`
muyu114
  • 浏览: 137877 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Activity之间的通信

 
阅读更多

Activity 之间的通信是通过Intent实现的

1.由activity A 到B -- 调用同一个应用下的activity

a.普通方式

流程:创建一个Intent实例 ,通过Intent指定从哪个Activity到哪个Activity,然后 A实例对象.startActivity(Intent实例) eg:

Intent intent = new Intent(A.this,B.class);

你也可以传参数到目标Activity

intent.putExtra("key",value);----有个中重载,如果你要传的值是自己定义的类对象,那么这个类必须实现 java.io.Serializable 接口

A的实例对象.startActivity(intent);

b.启动带返回值的Activity

既然能从A传参数到B,肯定也能从B返回数据给A

流程: 创建一个Intent实例,然后A的实例对象.startActivityForResult(Intent实例,int类型的请求标示);

重写A类的onActivityResult(int requestCode, int resultCode, Intent data) ;

注意:int类型的请求标示必须是唯一的,通常情况下 我们使用布局文件的int表示方式作为请求标示

eg:

//启动 带返回值的activity

Intent intent = new Intent(A.this,B.class);

A的实例对象.startActivityForResult(intent, R.layout.main);

//在B类中 指定返回值

Intent intent=B的实例对象.getIntent().putExtra("key","hello");

B的实例对象.setResult(20,intent);

//重写A类的onActivityResult(int requestCode, int resultCode, Intent data) 接收数据

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case R.layout.main:
if(requestCode==20){
String resultStr= data.getStringExtra("key");
}
break;

default:
break;
}
}

变量resultStr 就是返回值 为 hello;


2.调用不同应用程序的Activity

创建Intent实例时 有很多重载

public Intent(Context packageContext,Class<?> cls); --- 上面已经使用了

public Intent(String action);

public Intent(String action,Uri uri);

调用其他应用程序的Activity 就是通过后两种构造实现的 (通过Action 的方式);

a.调用系统的应用程序

android 系统自带很多功能的应用,像打电话,浏览网页,发送Email等。。

eg: 打电话

Intent intent = new (Intent.Action_CALL,Uri.parse("tel:"+电话号码));

startActivity(intent);


b.己的Activity Action 供别的应用调用

流程:在AndroidManifest.xml 中的被调用的Activity的节点下定义Action ,在调用方使用Intent(String action) 构造调用

注意:两个Activity 可以 属于不同的应用

eg :

AndroidManifest.xml 中定义 Action

<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.myaction"/>
</intent-filter>
</activity>

调用方调用

Intent intent = new Intent("com.myaction");

startActivity(intent);


c.用需要传参的其他应用的Activity

由第三种构造(public Intent(String action,Uri uri);) 可以了解我们可以通过Uri对象给被调用的Activity传递参数

分析Uri的格式("tel:12345678")可以发现Uri需要一个头 ("tel"); 这个头在你自定义action 的时候需要自己定义

这个头也是在Androidmanifest.xml 中定义

流程:在AndroidManifest.xml 中的被调用的Activity的节点下定义Action 和Uri头,在调用方使用

Intent(String action,Uri uri);构造调用

eg:

在AndroidManifest.xml 中定义Action 和 Uri头

<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.myaction"/>

<!--Uri头-->

<data android:scheme="myscheme"></data>
</intent-filter>
</activity>

在调用方调用

Uri uri = Uri.parse("myscheme://哈哈哈");

Intentintent = new Intent("com.myaction",uri);

startActivity(intent);

在被调用方的到传过来的参数

Uri uri = getIntent().getData();

String str= uri.getHost();

分享到:
评论

相关推荐

    Fragment与Activity之间通信实例

    Fragment与Activity之间的通信是Android开发中常见的需求,特别是在创建复杂、动态布局时。本实例将深入探讨这一主题,讲解如何在Fragment和Activity之间有效地传递数据和执行操作。 首先,让我们了解Fragment和...

    fragment和activity之间通信

    在这个"fragment和activity之间通信"的小Demo中,开发者可能展示了如何创建一个简单的示例,演示了上述一种或多种通信方式。具体实现可能包括创建自定义接口、使用`setArguments()`和`getArguments()`,或者通过`...

    Android中Activity之间通信

    在Android开发中,Activity之间的通信是应用程序核心功能的一部分,因为它们代表了用户界面的主要交互点。本文将详细探讨两种主要的Activity间通信方式:使用Intent和使用SharedPreferences。 首先,我们来看Intent...

    Android中Service与Activity之间通信的几种方式

    在Service与Activity之间通信,我们可以通过创建自定义的Binder类来实现。 首先,我们需要在Service中创建一个Binder类,例如`MsgBinder`,它继承自`Binder`。在这个Binder类中,我们可以定义一些方法,让Activity...

    Android四大组件——Activity(一)Activity之间通信及其生命周期变化

    在本篇内容中,我们将深入探讨Activity之间的通信以及它们在不同操作下的生命周期变化,并讨论如何传递回传参数。 首先,我们来看Activity之间的通信。在Android系统中,Activity可以通过Intent进行通信。Intent是...

    Android中Activity之间如何通信以及传值

    以及Activity之间的通过Intent传值,startActivityForResult(intent, REQUSET)以及onActivityResult(int requestCode, int resultCode, Intent data)基本使用

    activity之间通信-请求码结果码的使用

    总之,请求码和结果码是Android Activity间通信的重要工具,它们使得数据和控制流能够在多个Activity之间顺畅地传递,为复杂应用提供了灵活的架构支持。熟练掌握这一机制,能够帮助开发者更好地设计和实现Android...

    详解Android Service与Activity之间通信的几种方式

    Android Service与Activity之间通信的几种方式 服务(Service)和活动(Activity)是 Android 应用程序的两个基本组件,它们之间的通信是非常重要的。服务负责长期运行的任务,而活动负责前台页面的展示。在实际...

    tabhost的子activity跟activity通信

    然而,在实际应用中,我们可能会遇到TabHost的子Activity与主Activity之间通信的问题,特别是在处理回调事件如OnActivityResult()时。本文将详细探讨这个问题,并提供解决方案。 首先,理解TabHost的工作原理是关键...

    Fragment和Activity通信以及Fragment之间通信的方式(二)

    两者之间的通信以及Fragment之间的通信是Android开发中的重要知识点,这对于创建复杂的、交互丰富的用户界面至关重要。在本篇中,我们将深入探讨这两种通信方式。 首先,我们来看Fragment与Activity的通信。...

    Android不同Activity之间的通信方式

    android不同Activity之间的通信方式,几秒钟教会你Android中集中常用的Activity通信

    android_不同Activity之间的通信方式

    在Android开发中,Activity间的通信是非常关键的一环,因为它允许应用程序的不同部分相互交互,实现功能的联动。本文将深入探讨两种常见的Activity间通信方式:Intent和SharedPreferences。 首先,Intent是Android...

    fragment-activity通信

    本教程将深入探讨两种常见的Fragment与Activity之间通信的方式。 1. **通过接口(Interface)通信** - **接口定义**:在Fragment中,我们可以创建一个接口,并在Activity中实现这个接口。这样,当Fragment需要与...

    service与activity之间的通信

    本教程将详细介绍如何实现Service与Activity之间的通信。 一、Service概述 Service是Android四大组件之一,它在后台运行,不提供用户界面,可以执行长时间运行的任务,如网络操作、播放音频等。Service有两种启动...

    Android实现Activity之间通信的方法

    本文将详细讲解如何在Android中实现Activity之间的通信,特别是数据的发送与接收。 首先,Activity间的通信通常有两种方式:显式Intent和隐式Intent。在上述示例中,我们看到的是显式Intent的使用,这种方式是通过...

    Fragemt与Activity之间的通信 双Fragment通信

    当一个Activity中存在多个Fragment时,它们之间的通信是必不可少的,以便协同工作,提供良好的用户体验。本篇将详细探讨Fragment与Fragment以及双Fragment之间的通信机制。 首先,了解Fragment的基本概念:Fragment...

    详解Android activity与fragment之间的通信交互

    在开发过程中不可避免的会出现fragment与fragment,fragment与activity之间的通信交互问题。 本章讲述如何实现fragment与activity之间的通信。 一、APP构成 MainActivity+底部导航栏; 二、通信目的 MainActivity中...

    activity之间的通信

    Activity之间的通信是Android系统中的关键概念,使得不同界面能够协同工作,为用户提供流畅的体验。本篇将深入探讨Activity通信的核心知识点。 一、Intent:Activity间的桥梁 Intent是Android系统用于启动另一个...

Global site tag (gtag.js) - Google Analytics