Android——Intent传递信息

本文详细介绍了Android中Intent的四种主要用法:显示意图、隐式意图、向下一个Activity传递数据及向上一个页面返回数据。在显示意图中,需要指定目标Activity;隐式意图则通过intent-filter匹配不同应用的Activity。数据传递通常借助putExtra和Bundle进行,而返回数据则利用startActivityForResult和onActivityResult方法实现。

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

Intent组成元素在这里插入图片描述

一、显示意图

需要指定被开启的类名或路径名,一般用于启动同一应用中的Aactivity
声明方式

//第一种:在构造函数中指定
Intent intent = new Intent(this,Res.class);
//第二种:调用setClass方法
Intent intent = new Intent();
intent.setClass(this,Res.class);
//第三种:调用setComponent方法
Intent intent = new Intent();
ComponentName componentt = new ComponentName(this,Res.class);
intent.setComponent(component);

二、隐式意图

一般用于启动不同应用的Activity。
需要添加intent-filter过滤器,添加标签,指定name的值,通过name值找到Activity。
在这里插入图片描述

//通过Uri得到更加详细的信息
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
Uri uri = Uri.parse("tel:" + 10086);
intent.setData(uri);
startActivity(intent);

三、向下一个Activity传递数据

可通过putExtra方法传递个中类型参数,为方便管理,使用Buindle。把Builder全部打包号只需调用一次putExtras方法,把Builder取出来也只需一次getExtras

//发送数据
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
Uri uri = Uri.parse("tel:" + 10086);
intent.setData(uri);
Bundle bundle = new Bundle();
bundle.putString("key1","value1");
bundle.putInt("key2",2);
bundle.putChar("key3",'C');
intent.putExtras(bundle);
startActivity(intent);
//接收数据
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String value1 = bundle.getString("key1");
int value2 = bundle.getInt("key2");

四、向上一个页面返回数据

1、前一个页面打包好请求数据,调用startActivityForResult(Intent,requestCode)

Intent intent = new Intent(this,SMSListActivity.class);
startActivityForResult(intent,0);

2、下一个页面返回前一个页面时,打包应答数据并调用setResult(requestCode,Intent);

String message = smsString[position];
Intent intent = new Intent(SMSListActivity.this,MainActivity.class);
intent.putExtra("message",message);
//把当前界面的数据,返回给开启我的界面
setResult(0,intent);
//关闭当前界面
finish();

3、前一个页面重写onActivityResult方法

    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0){
            mEtContent.setText(data.getStringExtra("message"));
        }else if (requestCode == 1){
            mETPhone.setText(data.getStringExtra("phone"));
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值