美文网首页
Android:Activity之间的连接者——Intent

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

作者: 穿梭侠 | 来源:发表于2018-07-19 19:08 被阅读0次

    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一样,大家可以自己举一反三的试一试。

    相关文章

      网友评论

          本文标题:Android:Activity之间的连接者——Intent

          本文链接:https://www.haomeiwen.com/subject/yutxmftx.html