Intent是android四大组件之间交互的一种重要方式。Intent可以指明当前要执行的动作,也可以指明要传递的数据。Intent可以用来启动活动,启动服务,发送广播。
Intent分为两种:1.显式Intent 2.隐式Intent
显示Intent使用方法:
例(启动活动)
Intent有多个重载的构造方法。其中一个是Intent(Context packageContext, Class<?> cls) 第一个参数是上下文Context对象, 因为Activity, Service, Broadcast均为Context的子类,所以可以直接传入。 后一个参数是要启动的活动。通过这个构造函数就可以构建出“意图”。然后将这个Intent对象传给startActivity()方法就可以启动另外的活动了。
隐式Intent使用方法:
例(启动活动)
隐式Intent不直接指明要启动的活动。而是通过描述要启动的组件的特征,借助系统分析这个Intent, 对系统内的所有组件的特征进行筛选过滤出合适的组件。所有的组件,如果想被隐式的Intent启动,都要通过在
Intent向下一个活动传递数据
启动活动时传递数据使用的是一系列putExtra(键,值)方法的重载。他可以把数据暂存在Intent中,在启动了下一个活动之后,再把数据从intent中取出来。在下一个活动中使用getIntent()获取到启动它的那个intent对象,然后调用getStringIntent(键)方法,获取到传来的数据getXXIntent, XX为传来数据的类型。
Intent返回数据给上一个活动
使用startActivityForResult(Intent, 请求码)启动下一个活动,来向启动方返回数据,请求码为了让上一个活动能够识别出这是哪一个活动返回给他的。这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。
setResult(RESULT_OK, intent)专门用来向上一个活动返回数据的方法,第一个参数是返回码。由于我们是使用 startActivityForResult()方法来启动 SecondActivity 的,在 SecondActivity 被销毁之后会回调上一个活动的 onActivityResult()方法,因此我们需要在 FirstActivity 中重 写这个方法来得到返回的数据。