第一行代码笔记2

1.隐试Intent

  通过<activity/>的标签下配置<intent-filter>的内容,可以指定当前activity能够响应的action和category

  在AndroidManifest.xml中配置

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

<action>标签指明可以响应的action

<category>标签则包含了一些附加消息

PS:只有<action>  <category>中的内容同时能够匹配上Intent中的action和category,这个活动才能响应Intent

 <category android:name="android.intent.category.DEFAULT"></category>
这个是默认的!

在类中的声明

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //简便的写法
        //Intent intent = new Intent("android.intent.category.DEFAUL");
        Intent intent  = new Intent();
        intent.setAction("android.intent.category.DEFAULT");
        startActivity(intent);
    }
}) ;
2.Intent的更多用法

putExtra:将数据以key:value的形式放入一个Parcelable对象中,直接由Intent对象携带,适合少量数据。
setData:将数据以数据流的方式传输,Intent接收后再单独接收Data部分,适合数据量较大的数据传输,如文件或图片等。

   button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("http://www.baidu.com"));
            startActivity(intent);
        }
    });
}
在AndroidMainifest.xml中声明

<activity android:name=".SecondActivity">
    <intent-filter>
        <data android:scheme="http"></data>
        <action android:name="android.intent.action.view"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
    </intent-filter>
</activity>
点击按钮可以跳转到百度这一个界面

我们还可以在<intent-filter>标签中再配置一个<data>标签,用于更精确地指定当前活动能够响应什么类型的数据。<data>标签中主要可以配置以下内容。
1. android:scheme
用于指定数据的协议部分,如上例中的http部分。
2. android:host
用于指定数据的主机名部分,如上例中的www.baidu.com部分。
3. android:port
用于指定数据的端口部分,一般紧随在主机名之后。
4. android:path
用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
5. android:mimeType
用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

3.返回数据给上一个活动

Mainactivity中的

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivityForResult(intent, 1);//1是请求吗
    }
});
这里使用的是MainaActivity启动SecondActivity的,在SecondActivity被销毁之后会回调上一个activity的onActivityResult()方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //,第一个参数requestCode,即我们在启动活动时传入的请求码。
    // 第二个参数resultCode,即我们在返回数据时传入的处理结果。
    // 第三个参数data,即携带着返回数据的Intent。
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode){
        case 1:
            if(resultCode==2){
                EditText editText =(EditText)this.findViewById(R.id.edittext);
                String returnDate = data.getStringExtra("value");
                editText.setText(returnDate);
            }
            break;
        default:
            break;
    }
}
如果在SecondActivity中不是按按钮返回的话,用户是直接按Back键返回,那么我们可以再SecondActivity中实现

    public void onBackPressed() {
//      super.onBackPressed(); 这个要注释掉,然而没想懂为什么
        Intent intent = new Intent(SecondActivity.this,MainActivity.class);
        intent.putExtra("value","This is return value");
        setResult(2,intent);
        finish();
    }
当用户按下Back键后就会执行onBackPressed这个方法




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值