紧接着上一篇–intent详解1
http://blog.youkuaiyun.com/qq_30960163/article/details/52648150
这篇介绍intent的Extra属性、Flag属性;显式Intent和隐式Intent以及使用intent传递数据
4.Extra属性
它是以Key-value对的形式发送给处理这个Intent对象的组件的附加信息
Intent 对象为插入各种类型的附加数据会有一系列的put…()方法,并为读取数据也会有一组类似的get…()方法。这些方法并行于Bundle对象一些方法。 实际上,附加信息能够作为一个Bundle对象使用putExtras()和getExtras()方法来安装和读取。
5.Flag属性
Intent对象有各种标记,很多都是用于指示Android系统如何启动Activity(如,Activity应该属于哪个任务),以及启动后如何处理(如,它是否属于最近的Activity列表)。所有这些标记都在Intent类中定义。
Android系统和平台相关的应用都采用Intent对象来发出面向系统的广播和激活系统定义的组件。
6.Action和Data隐式属性启动系统Activity
Intent in = new Intent();
in.setAction(Intent.ACTION_VIEW);
in.setData(Uri.parse("http://www.baidu.com"));
startActivity(in);
因为启动系统自带的Activity,不需要在清单文件中配置intent-filter元素。
3.显式Intent和隐式Intent
1.显式Intent启动Activity
Component属性启动Activity就是显式用法。常用下面的方法来显式启动Activity。
Intent in = new Intent(AboutUsActivity.this,PrivacytermsActivity.class);
startActivity(in);
或者
startActivity(new Intent(AboutUsActivity.this,PrivacytermsActivity.class));
2.隐式Intent启动Activity
Action和Category属性启动组件,Data和Type属性启动组件,Action和Data属性启动系统Activity都是隐式Intent。
4.传递数据
1.向下一个Activity传递数据
比如MainACtivity传递一个字符串(hello)给PrivacytermsActivity类
MainACtivity中添加如下代码
Intent in = new Intent(MainActivity.this,PrivacytermsActivity.class);
in.putExtra("extra_data","hello");
startActivity(in);
PrivacytermsActivity需要接受数据的地方添加如下代码
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
2.返回数据给上一个活动
比如PrivacytermsActivity要返回一个字符串(return hello)给MainACtivity类
首先MainACtivity类通过Intent启动PrivacytermsActivity类,然后PrivacytermsActivity类需要调用setResult()方法来设置处理结果。最后MainACtivity类需要重写onActivityForResult()方法获得返回数据。
代码
MainACtivity类添加如下代码
Intent in = new Intent(MainActivity.this,PrivacytermsActivity.class);
//第二个参数是请求码
startActivityForResult(in,0);
//重写onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 0:
if (resultCode == RESULT_OK){
String returnData = data.getStringExtra("return_data");
}
break;
}
}
PrivacytermsActivity需要传递返回数据的地方添加如下代码
Intent intent = new Intent();
intent.putExtra("return_data","return hello");
//第一个参数表示用于向上一个活动返回处理的结果
setResult(RESULT_OK,intent);
finish();