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之间的通信是Android开发中常见的需求,特别是在创建复杂、动态布局时。本实例将深入探讨这一主题,讲解如何在Fragment和Activity之间有效地传递数据和执行操作。 首先,让我们了解Fragment和...
在这个"fragment和activity之间通信"的小Demo中,开发者可能展示了如何创建一个简单的示例,演示了上述一种或多种通信方式。具体实现可能包括创建自定义接口、使用`setArguments()`和`getArguments()`,或者通过`...
在Android开发中,Activity之间的通信是应用程序核心功能的一部分,因为它们代表了用户界面的主要交互点。本文将详细探讨两种主要的Activity间通信方式:使用Intent和使用SharedPreferences。 首先,我们来看Intent...
在Service与Activity之间通信,我们可以通过创建自定义的Binder类来实现。 首先,我们需要在Service中创建一个Binder类,例如`MsgBinder`,它继承自`Binder`。在这个Binder类中,我们可以定义一些方法,让Activity...
在本篇内容中,我们将深入探讨Activity之间的通信以及它们在不同操作下的生命周期变化,并讨论如何传递回传参数。 首先,我们来看Activity之间的通信。在Android系统中,Activity可以通过Intent进行通信。Intent是...
以及Activity之间的通过Intent传值,startActivityForResult(intent, REQUSET)以及onActivityResult(int requestCode, int resultCode, Intent data)基本使用
总之,请求码和结果码是Android Activity间通信的重要工具,它们使得数据和控制流能够在多个Activity之间顺畅地传递,为复杂应用提供了灵活的架构支持。熟练掌握这一机制,能够帮助开发者更好地设计和实现Android...
Android Service与Activity之间通信的几种方式 服务(Service)和活动(Activity)是 Android 应用程序的两个基本组件,它们之间的通信是非常重要的。服务负责长期运行的任务,而活动负责前台页面的展示。在实际...
然而,在实际应用中,我们可能会遇到TabHost的子Activity与主Activity之间通信的问题,特别是在处理回调事件如OnActivityResult()时。本文将详细探讨这个问题,并提供解决方案。 首先,理解TabHost的工作原理是关键...
两者之间的通信以及Fragment之间的通信是Android开发中的重要知识点,这对于创建复杂的、交互丰富的用户界面至关重要。在本篇中,我们将深入探讨这两种通信方式。 首先,我们来看Fragment与Activity的通信。...
android不同Activity之间的通信方式,几秒钟教会你Android中集中常用的Activity通信
在Android开发中,Activity间的通信是非常关键的一环,因为它允许应用程序的不同部分相互交互,实现功能的联动。本文将深入探讨两种常见的Activity间通信方式:Intent和SharedPreferences。 首先,Intent是Android...
本教程将深入探讨两种常见的Fragment与Activity之间通信的方式。 1. **通过接口(Interface)通信** - **接口定义**:在Fragment中,我们可以创建一个接口,并在Activity中实现这个接口。这样,当Fragment需要与...
本教程将详细介绍如何实现Service与Activity之间的通信。 一、Service概述 Service是Android四大组件之一,它在后台运行,不提供用户界面,可以执行长时间运行的任务,如网络操作、播放音频等。Service有两种启动...
本文将详细讲解如何在Android中实现Activity之间的通信,特别是数据的发送与接收。 首先,Activity间的通信通常有两种方式:显式Intent和隐式Intent。在上述示例中,我们看到的是显式Intent的使用,这种方式是通过...
当一个Activity中存在多个Fragment时,它们之间的通信是必不可少的,以便协同工作,提供良好的用户体验。本篇将详细探讨Fragment与Fragment以及双Fragment之间的通信机制。 首先,了解Fragment的基本概念:Fragment...
在开发过程中不可避免的会出现fragment与fragment,fragment与activity之间的通信交互问题。 本章讲述如何实现fragment与activity之间的通信。 一、APP构成 MainActivity+底部导航栏; 二、通信目的 MainActivity中...
Activity之间的通信是Android系统中的关键概念,使得不同界面能够协同工作,为用户提供流畅的体验。本篇将深入探讨Activity通信的核心知识点。 一、Intent:Activity间的桥梁 Intent是Android系统用于启动另一个...