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之间的通信,代码中还给出了两者之间通信具体调用的函数及其顺序。
Activity之间通信及其生命周期变化,及回传参数等基础知识点
activity之间通信-请求码结果码的使用
在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。
本篇文章主要介绍了Android中Service与Activity之间通信的几种方式,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,具有一定的参考价值,有兴趣的可以了解一下。
以及Activity之间的通过Intent传值,startActivityForResult(intent, REQUSET)以及onActivityResult(int requestCode, int resultCode, Intent data)基本使用
自己写的activity和fragment 之间通讯 小demo ~~ 希望能帮到大家
主要介绍了Android实现Activity之间通信的方法,涉及Android中Activity实现数据的发送及接收相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
android中常用的不同Activity之间的通信方式。
主要介绍了详解Android Service与Activity之间通信的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
android不同Activity之间的通信方式,几秒钟教会你Android中集中常用的Activity通信
Activity之间通信,传递对象的实例
实现service与activity之间的通信功能,一个小demo。
Fragment和Activity通信以及Fragment之间通信的方式(二) http://blog.csdn.net/yalinfendou博客中有详细介绍……
在开发过程中不可避免的会出现fragment与fragment,fragment与activity之间的通信交互问题。 本章讲述如何实现fragment与activity之间的通信。 一、APP构成 MainActivity+底部导航栏; 二、通信目的 MainActivity中...
Service的启动,Activity与Service之间数据传递,Binder利用bindService实现Service传递数据给Activity,Activity的成员Broadcast实现Service传递数据给Activity
Activty中两个Fragment之间的通信
Service和Activity之间通信,新建一个MyBinder类,继承Binder, new ServiceConnection();回调onServiceConnected