Intent,又称为意图,是一种运行时绑定机制,它能在程序运行的过程中链接两个不同的组件(Activity、Service、BroadcastReceiver)。通过Intent,程序可以向Android表达某种请求或意愿,Android会根据意愿的内容选择适当的组件来请求。
在这些组件之间的通讯中,主要是由Intent协助完成的。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
通过Intent请求Activity,必须在AndroidManifest.xml文件中对被请求的Activity新增标签配置,否则会导致错误。
Intent一般包含两个主要信息,action、data。
action:表示这个Intent此次操作的动作。
data:表示这次动作涉及的数据。
通过一个例子来展示Activity中使用Intent导向新Activity并传递数据。此程序仅在两个页面之间相互跳转,但是每次跳转会创建新的Activity,所以在startActivity()之后需要调用finish()销毁当前Activity,如果不销毁,多次跳转后,程序的Activity栈中会存放多个Activity,点击设备的返回按钮,会发现会一直向后退。
主要步骤:
新建Android项目,增加新布局文件other.xml,新增Activity类otherActivity.class,用于接受Intent并展示other.xml。
在MainActivity类中,声明一个Intent类,通过Intent的构造函数指明源和目标。
获得Intent后,使用Intent.putExtra()方法对其传入数据。
调用Activity.startActivity启动这个Intent。
在otherActivity类中,使用Activity.getIntent()获得当前Activity的Intent。
获得Intent后,使用Intent.getXxxExtra()方法获得其中保存的数据。
在AndroidManifest.xml配置otherActivity节点。
示例代码
步骤2--3:
<a></a>
步骤4--5:
步骤7:
从Activity中返回数据
上面例子中只是介绍了Activity通过Intent传递数据,然而在实际应用中,不仅仅需要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递数据类似,但是还是有部分区别。
主要区别如下:
传递数据需要使用Activity.startActivityForResult()方法启动Activity,需要传递请求码,而不是Activity.startActivity()。
返回数据的时候,调用Activity.setResult()方法设置返回Intent以及返回码。
需要重写源Activity的onActivityResult()方法以便于接受返回的Intent,在onActivityResult()中会判断请求码和响应码。
通过一个例子说明从Activity返回数据。此程序有两个Activity,在MainActivity中输入加法运算的计算数,跳转到otherActivity中输入计算结果,并在点击返回后,把计算结果输出到MainActivity中。
MainActivity:
otherActivity:
本文转自承香墨影博客园博客,原文链接:http://www.cnblogs.com/plokmju/p/3140607.html,如需转载请自行联系原作者