Android:Activity之间的连接者——Intent

Intent是从一个activity到另一个activity的重要工具。Intent分为显性Intent和隐形Intent,本文主要分别讲述这两种Intent的用法,区别大家可以自己思考。

一、显性Intent:
显性Intent较隐性Intent来说稍微简单些,其大致使用形式为

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

这样通过这两句语句就可以开启SecondActivity这个Activity了,相对来说是比较简单的

但是有时候我们不仅仅满足于打开另一个Activity,我们还想要在两个Activity之间传递一些数据,所以要将数据添加到Intent里面,然后传递到另一个Activity中,具体代码如下

Intent intent =new Intent(this,SecondActivity.class);
intent.putExtra("name","zhangsan");

putExtra方法中有两个参数,第一个是我们的key,用来标记一条信息;第二个是我们要传递信息了,可以是String,int,float等多种类型

这样我们就将需要传递的值放在了intent中,并发送到了SecondActivity中在SecondActivity中添加以下代码:

Intent intent = getIntent();
String name=intent.getStringExtra("name");

首先通过getIntent()来获取从上一个Acticity中传递过来的Intent,再通过getStringExtra()方法来获取我们需要的值,里面的参数是我们之间设置过的信息的key

这样我们便将一条信息从一个Acticity传递到另一个Activity中了,但是我们这只是单方面的传值,如果我们想从第一个Activity跳转到第二个Activity中,在第二个Activity销毁时跳转到第一个Activity中并回馈给第一个Activity一些值该怎么做?

当然我们的Intent还是可以完成的:

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

我们改变了一下开启一个Intent的方法,startActivityForResult()顾名思义:开启一个活动目的是获得结果,第一个参数是我们要开启的Intent,第二个参数是RequestCode,接下来我们需要在另一个Activity中设置反馈的值:

Intent intent=new Intent(this,FirstActivity.class);
intent.putStringExtra("name","zhangsan");
setResult(1,"Intent");
finish();

这样,我们的Intent就成功反馈回去了,并且调用finish()方法会销毁当前的Activity,返回到第一个Activity中,我们在第一个Activity需要做的就是获取反馈回来的数据,我们需要重写onActivityResult(int requestCod,int resultCode,Intent data)这样一个方法,当有Intent返回时就会自动调用这个方法,我们来实现重写一下:

protected void onActivityResult(int requestCode,int resultCode,Intent data){
    if(requestCode==1&&resultCode==1){
        String name=data.getStringExtra("name);
    }
}

这样我们就成功的得到了反馈回来的数据了。

二、隐性Intent

隐性Intent并不象显性Intent那样明确,我们在清单文件里注册一个Activity时要为其多配置几项属性:

    <activity android:name=".SecondActivity" >
        <intent-filter>
            <action android:name="com.a"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

我们为其设置了action和category属性,其中action中name的值是我自己定义的,在稍后的Intent的编写上我们也会为其添加action和category属性,只有action和category两项完全匹配时,Intent才能成功跳转到SecondActivity中,下面时Intent的代码编写:

Intent intent=new Intent("com.a");
startActivity(intent);

Intent的构造方法中的参数是我们注册时留下的action的name的值,至于category的值,我们在注册时为其添加了android.intent.category.DEFAULT这条默认值,如果intent中没有声明,则默认category的值为这个值。这样我们再startActivity我们就可以调用启动另一个Activity了

至于传递数据和回馈数据使用方法和显性Intent一样,大家可以自己举一反三的试一试。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容