您的位置:首页 > 其它

intent详解2

2016-09-24 09:15 701 查看
紧接着上一篇–intent详解1

http://blog.csdn.net/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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  intent