Android开发之Intent

本文详细介绍了Android中的Intent机制,包括Intent的显示意图和隐式意图,以及如何通过Intent在不同Activity间传递数据。重点阐述了Intent的创建、数据封装与解包过程,并对比了直接启动和启动带有请求码的两种方法,最后说明了Intent在返回数据时的处理流程。
Android中的Intent是连接各种组件的桥梁,它可以启动一个Activity并且启动他的时候传递参数给此Activity。
Intent有显示意图和隐式意图之分,所谓显示意图,是指在创建意图的时候,显示的创建某一个Activity
的Intent 比如
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
隐式意图,指的是在配置文件中加入某一Activity的action,然后在创建某intent的时候就可以通过该配置来创建
比如给OtherActivity创建一个action
<activity android:name=".OtherActivity" android:label="@string/app_name">
    <intent-filter>
         <action android:name="com.yuchao.intent" />
         <category android:name="android.intent.category.DEFAULT" />//这一行必须加
     </intent-filter>
 </activity>
然后在MainActivity中可以这样创建连接OtherActivity的intent
Intent intent = new Intent("com.yuchao.intent");
效果和上面的显示意图一样

Activity之间互相传递数据也是通过Intent来实现的
Bundle bundle = new Bundle();
bundle.putString("name", "yuchao");
bundle.putInt("age", 23);
intent.putExtras(bundle);
startActivity(intent);
Bundle是一个类似Map一样的数据结构,通过键值对来标识数据,这样intent在启动OtherActivity时就可以取出其中的数据
Bundle bundle= this.getIntent().getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");

intent的启动方法有两种,一种是直接调用startActivity(Intent intent)
另外一种方法是startActivityForResult(Intent intent,int requestCode)
前一种方法创建的intent在调用OtherActivity之后若还想跳回MainActivity页面,必须再次使用一次startActivity,而后面一种可以一次性地完成这个任务,该方法有两个参数,一个就是Intent,另外一个是requestCode,用来标识是哪个Activity来启动OtherActivity的,显然,这里是MainActivity。当OtherActivity被关闭(调用finish())的时候,程序会自动跳到MainActivity上,这里就需要MainActivity重写一个方法onActivityResult(int requestCode, int resultCode, Intent data),requestCode就是以上所述MainActivity传给OtherActivity的,resultCode是OtherActivity通过setResult(999,intent)给MainActivity反馈的,用来标识是哪一个Activity给MainActivity反馈的,intent中包含了反馈回来的数据
有关Intent的简单知识讲解完毕!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值