AndroidStudio中使用Intent启动活动以及传递数据

AndroidStudio中使用Intent启动活动以及传递数据

基于AndroidStudio 4.0.1 版本:

Intent表达的是一种意图,可以在活动之间来回穿梭。同时还可以在不同的组件中传递数据。一般用于启动活动,启动服务以及发送广播等场景。本文所述为启动活动以及在活动中单双向传递数据。


前言

Intent:表达的是一种意图,在活动之间来回穿梭。同时还可以在不同组件传递数据。一般用于启动活动,启动服务以及发送广播等场景。本文主要讲述Intent用于启动活动并在活动间单向及双向传递数据。


一、Intent是什么?

Intent表达的是一种意图,在活动之间来回穿梭。同时还可以在不同组件传递数据。一般用于启动活动,启动服务以及发送广播等场景。

二、分类及使用步骤

1.显示Intent

Intent表达的意图很明显,这种称为显示Intent。

显示启动Activity大致可以分为以下两个步骤。

(1)创建Intent对象。

需要传入两个参数:第一个参数Context要求提供一个启动活动的上下文(通常是当前的Activity),第二个参数则指要启动的目标活动(即要跳转到的Activity)。

代码如下(示例):

 Intent intent = new Intent(UIActivity.this, MainActivity.class);

(2)应用startActivity()方法来启动Activity。

startActivity()方法的语法格式如下:public void startActivity (Intent intent)

代码如下(示例):

 startActivity(intent);

2.隐式Intent

不直接表达想启动哪个活动,通过设置更为抽象的action和category等信息,让系统自动去判断启动哪个活动。(在注册表即AndroidManifest.xml中进行设置)action和category要同时匹配才能启动,每个Intent只能指定一个action,但是可以指定多个category。

隐式启动Activity大致可以分为以下两个步骤。

(1)在注册表中对目标Activity设置action与category。

代码如下(示例):

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

(2)使用了Intent另一个构造函数,直接将action字符串传了进去。

代码如下(示例):

Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);

三、隐式Intent的更多用法

(1)调用系统浏览器来打开一个网页
代码如下(示例):

Intent intent = new Intent();				// 创建Intent对象
intent.setAction(Intent.ACTION_VIEW);			// 为Intent设置动作
intent.setData(Uri.parse("http://www.baidu.com"));	// 为Intent设置数据
startActivity(intent);					// 将Intent传递给Activity

也可以使用下面的语句实现:

Intent intent = new Intent(Intent.ACTION_VIEW,
 Uri.parse("http://www.mingribook.com"));	// 创建Intent对象
startActivity(intent);				// 将Intent传递给Activity

参数解释:Intent.Action_VIEW是安卓内置动作(专门打开活动的动作),Uri.parse()将一个字符串网址解析成Uri对象,然后setData()将这个对象传入Intent。

(2)实现打电话功能
代码如下(示例):

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

四、使用Intent在Activity之间传递数据

1.单向传递数据

现在有两个Activity分别是MainActivity1和MainActivity2,现在使用MainActivity1传递数据到MainActivity2(示例):


在MainActivity1中编写:使用inputEtra,参数是一个key-value(键-值)对的组合,可以根据其中的key来获取具体的内容(value)
   Intent intent = new Intent(MainActivity1.this,MainActivity2.class);
                intent.putExtra("name",lixu);
                intent.putExtra("age",21);
                startActivity(intent);

在MainActivity2中编写:

    Intent intent = getIntent(); //获取Intent对象
    String data1 = intent.getStringExtra("name");//获取输入的姓名
   	int data2 = intent.getIntExtra("age", 18);//获取输入的年龄
    Log.d("IntentActivity", "名字:" + data1 + ",年龄:" + data2);//在终端打印出来

2.双向传递数据

要实现调用另一个Activity并返回结果,经常需要使用以下3个方法。

(1)startActivityForResult(Intent intent, int requestCode)方法原型

public void startActivityForResult (Intent intent, int requestCode)

startActivityForResult()这个方法期望在活动销毁时,返回一个结果给上一个活动。请求码1就是回调中判断数据的来源。(示例):

  startActivityForResult(intent,1);

(2)setResult(int resultCode, Intent data)方法

public final void setResult (int resultCode, Intent data)

setResult():两个参数(第一个参数是处理的返回结果,一般就是RESULT_OK/RESULT_CANCELED,第二个则是带有数据的intent传回去)(示例):

public void onClick(View v){
         Intent intent = new Intent();
  		 intent.putExtra("data_return","Hello FirstActivity");
         setResult(RESULT_OK,intent);
         finish();

(3)onActivityResult(int requestCode, int resultCode, Intent data)方法

protected void onActivityResult(int requestCode, int resultCode, Intent data)

由于第二个活动是通过第一个活动中的startActivityForResult()方法启动的,所以被销毁时第一个活动中要通过onActivityResult()这个方法呼应。onActivityResult()三个参数:(第一个参数requestCode启动活动时的请求码,第二个参数返回数据时传入的处理结果,第三个参数带数据的Intent),如果是直接按BACK键返回则重写onBackPressed()这个方法

(示例):

    //    获得返回的数据 请求码 结果码 数据源
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    String returnedData = data.getStringExtra("data_return");
                    Log.d("IntentActivity", returnedData);
                }
                break;
            default:
        }
    }

具体关系:
在这里插入图片描述


这是本人的第一篇CSDN,文章中如有错误请大家不吝赐教。希望与大家一同学习,共同进步。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android StudioIntent是一种用于在不同组件之间传递数据的机制。Intent可以用于启动活动、服务和广播接收器,以及在这些组件之间传递数据。 要使用Intent,您需要创建一个Intent对象,并指定要启动的组件和要传递的数据。例如,要启动一个活动并传递一些数据,您可以使用以下代码: ``` Intent intent = new Intent(this, MyActivity.class); intent.putExtra("key", "value"); startActivity(intent); ``` 在这个例子,我们创建了一个Intent对象,并指定要启动活动是MyActivity。我们还使用putExtra()方法将一个键值对添加到Intent,以便在启动活动使用。 要在启动活动获取传递的数据,您可以使用以下代码: ``` Intent intent = getIntent(); String value = intent.getStringExtra("key"); ``` 在这个例子,我们使用getIntent()方法获取传递给活动Intent对象。然后,我们使用getStringExtra()方法获取传递的字符串数据,并指定键名为“key”。 除了传递数据Intent还可以用于启动其他组件,例如服务和广播接收器。要启动服务,您可以使用以下代码: ``` Intent intent = new Intent(this, MyService.class); startService(intent); ``` 在这个例子,我们创建了一个Intent对象,并指定要启动的服务是MyService。然后,我们使用startService()方法启动服务。 要注册广播接收器并接收广播消息,您可以使用以下代码: ``` IntentFilter filter = new IntentFilter(); filter.addAction("com.example.MY_ACTION"); MyBroadcastReceiver receiver = new MyBroadcastReceiver(); registerReceiver(receiver, filter); ``` 在这个例子,我们创建了一个IntentFilter对象,并指定要接收的广播消息是“com.example.MY_ACTION”。然后,我们创建了一个广播接收器对象,并使用registerReceiver()方法注册它。 以上是Android Studio使用Intent的基本方法。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿代码_QQ_3014067949

给小编价格鸡腿吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值