Android--第一行代码 Intent用法

来源:互联网 发布:网络销售是做什么的 编辑:程序博客网 时间:2024/05/17 13:08

Intent可以启动活动,服务,传递数据,发送广播等等

Intent 用法

首先建一个新的Activity类 ,在AndroidManifest.xml 中注册该类,然后在第一个类中使用Intent启动新建活动

显示Intent :

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);startActivity(intent);

Intent中有两个参数。第一个为Context,需要提供一个启动活动的Context。第二个参数是,启动的目标活动,然后使用Activity类中提供的startActivity方法


隐式 Intent:

在配置文件,<activity>标签下配置<intent-filter>来指定启动活动的action 和 category 

AndroidManifest.xml中代码

<activity android:name=".SecondActivity"    android:launchMode="singleInstance"   >    <intent-filter>        <action android:name="com.example.activitytest.ACTION_START"></action>        <category android:name="android.intent.category.DEFAULT"></category>        <category android:name="com.example.activitytest.MY_CATEGORY"></category>    </intent-filter></activity>
表明当前活动可以响应这个action,<category>标签中包含一些附加信息,可以更加精确的指明当前活动能响应的Intent中还有category,只有当action标签和category标签中内容同时和Intent中指定的action和category一致时,才能响应Intent

在Activity中加入

Intent intent = new Intent("com.example.activitytest.ACTION_START");                intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);

不用加入intent.addCategory("android.intent.category.DEFAULT");

因为android.intent.category.DEFAULT是一种默认的category,在调用startActivity是系统自动会加入该category


隐式 Intent还可以加入Android系统内置的动作

 Intent intent = new Intent(Intent.ACTION_VIEW);

    intent.setData(Uri.parse("http://www.baidu.com"));

    startActivity(intent);

可以打开百度网页


Intent传递数据:

使用Intent提供的putExtra()方法。可以在Intent中暂存一些数据(在当前Activity)

String data = "Hello";

Intent intent = new Intent...

intent.putExtra("extar_data", data);

putExtra()方法传递的是一个键值对。第一个是键,第二个是值。

接收Intent  (要启动接收数据的Activity)

Intent intent = getIntent();

String data = intent.getStringExtra("extra_data");//通过键来获得intent中的数据


返回给一个活动数据是Intent:

需要使用startActivityForResult()来启动下一个活动,当下一个活动撤销时才会调用onActivityResult();方法,才能获得返回数据

在启动下一个活动时调用startActivityForResult()方法,两个参数

第一个参数 Intent

第二个参数 请求码:用来判断返回数据的来源

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

startActivityForResult(intentn,1);

在下一个活动中调用setResult();两个参数

第一个参数  向上一个获得返回处理结果,一般用RESULT_OK 或者 RESULT_CANCELED;也可以自己定义,如1,2,3,等

第二个参数  讲带有数据的Intent传回去;

Intent intent = new Intent();//新建一个空的Intent

intent.putExtra(....);//加入内容

setResult(RESULT_OK,intent);// 

finish();//撤销Activity

在第一个Activity中接收返回的数据

重写onActivityResult()方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) {    switch (requestCode) {        case 1:            if(requestCode == RESULT_OK) {                String returnedData = data.getStringExtra("data_return");                Log.d("FirstActivity", returnedData);            }            break;        default:    }}
第一个参数,requestCode // 请求码

第二个参数,resultCode //setResult中返回的处理结果,RESULT_OK。。。。

第三个参数,Intent 数据

先通过switch语句选择是否来自于第二个Activity,再通过resultCode判断处理结果是否成功,最后将数据提取出来

0 0