Intent的用法——第一行代码阅读笔记

本文深入探讨了Android应用中显式Intent和隐式Intent的使用方式,详细讲解了如何通过Intent传递数据,并介绍了如何在不同场景下启动活动。文章还涵盖了如何在Android应用中实现数据的双向传递,即从子活动向父活动返回数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

显式Intent启动活动


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

构建一个Intent,传入1.this作为上下文,传入2.class作为目标活动,意图就非常明显。极为显式Intent。

隐式Intent启动活动

  1. 启动程序内活动
    在清单文件,指定某个活动能够响应的action和category:


        <intent-filter ><action android:name="com.example.activitytest.ACTION1"/>
                        <category android:name="android.intent.category.DEFAULT"/>
                        <category android:name="com.example.activitytest.My"/>
            </intent-filter>
    

只有action和category的内容同时能够匹配上Intent中指定的action和category,才能响应Intent。


Intent intent = new Intent(“com.example.activitytest.ACTION1”);
intent.addCategory(“com.example.activitytest.My”);
startActivity(intent);


注意每个Intent中只能指定一个action但可以指定多个Category。
2. 启动其他程序的活动
比如程序需要展示一个网页:


Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(“http://www.baidu.com“));
startActivity(intent);


Intent.ACTION_VIEW是一个Android系统内置的动作。


            Intent intent = new Intent(Intent.ACTION_DIAL);
            intent.setData(Uri.parse("tel:10000"));     

Intent.ACTION_DIAL也是是一个Android系统内置的动作。调用系统拨号界面。

向活动传递数据

putExtra(key,value)方法可以把想要传递的数据存在intent中,启动另一个活动后,通过getIntent()方法取得Intent,然后调用getStringExtra()方法,传入相应的key,就可以得到传递的数据。
1. getStringExtra()
2. getIntExtra()
3. getBooleanExtra()
比如activity1有一个字符串,要传递到activity2中:


            String data ="Hello secondActivity";
            Intent intent = new Intent("com.example.activitytest.ACTION1");
            intent.addCategory("com.example.activitytest.My");
            **intent.putExtra("Data", data);**
            startActivity(intent);      

activity2.class里:


    Intent intent = getIntent();
    String data=intent.getStringExtra("Data");
    Log.d("Activity2", data);   

返回数据给上一个活动


activity1中:
startActivityForResult(intent, 1);//1为请求码


也是用于启动活动,在活动销毁时能够返回一个结果给上一个活动。
activity2中:


            Intent intent = new Intent();
            intent.putExtra("datareturn", "hello 1Activity!!");
            setResult(RESULT_OK, intent);
            finish();//销毁当前活动

构建一个Intent用于传递数据。不启动活动。
setResult(RESULT_OK, intent)用于想上一个活动返回数据。
返回activity1中:

activity2销毁后会回调activity1的onActivityResult(int requestCode, int resultCode, Intent data)方法。所以重写之:


protected void onActivityResult(int requestCode, int resultCode, Intent data){
    switch(requestCode){
    case 1:
        if(resultCode==RESULT_OK){
            String data1=data.getStringExtra("datareturn");
            Log.d("1Activity", data1);
        }
        break;
    default:
    }
}

通过检查requestCode的值判断数据来源,再通过resultCode判断处理结果是否成功。最后从data取值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值