Android intent使用

本文详细介绍了Android中Intent的使用,包括显式和隐式Intent的活动页面跳转,以及如何通过Intent进行数据的传递。在活动页面跳转中,讲解了显式引用和隐式引用的实现,特别提到了隐式Intent的配置,如scheme、host、port和mimeType等。在数据传递方面,讨论了向下传递和向上传递数据的步骤,还提供了在不使用按钮触发返回数据时,如何通过重写onBackPressed方法实现在按下返回键时返回数据。

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

Android intent使用

活动页面跳转

1.显式引用

     button1 = (Button)findViewById(R.id.button1);
                button1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                        startActivity(intent);
                    }
                });
                

2.隐式引用
(1)在Mainfest.xml文件中在需要跳转的Activity后面添加

     <intent-filter>
                    <action android:name="android.intent.action.second" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>

(2) MainActivity中编写代码

      Intent intent = new Intent("android.intent.action.second");
                  //  intent.addCategory("");
                    startActivity(intent);
                  

3.隐式intent的其他应用

  //setData方法作用是接受URI对象
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));
                startActivity(intent);

我们还可以在下面添加标签
这个标签下面可以添加
android:scheme 指定数据协议部分
android:host 指定数据主机名称
android:port 指定数据的端口部分
android:path指定主机名和端口后面的部分
android:mimeType 指定可以处理的数据类型

Intent intent = new Intent(Intent.ACTION_DIAL);//设置intent action类型
intent.setData(Uri.parse("tel:10086"));
活动页面相互传递数据

向下传递数据
1.发送数据页面

                    String Data = "haha";
                    Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                    intent.putExtra("my_data",Data);
                    startActivity(intent);

2.接受数据页面

 Intent intent = getIntent();
      String Data = intent.getStringExtra("my_data");
      Log.d("secondActivity",Data);

向上传递数据
1.在mainActivity页面添加intent,调用方法startActivityForResult(intent,1);

   Intent intent = new Intent(MainActivity.this,SecondActivity.class);
              startActivityForResult(intent,1);

2.在SecondActivity中添加携带数据intent调用方法setResult(RESULT_OK,intent)

   Intent intent =  new Intent();
              intent.putExtra("return_data","hah");
              setResult(RESULT_OK,intent  );
              finish();

3.finish()方法在销毁之前会回调上一个活动一次,在MainActivity方法中调用onActivityResult方法,在这个方法中将返回回来的数据解析出来

  @Override
 protected void onActivityResult(int requestCode, int resultCode,  Intent data) {
     switch (requestCode){
         case 1:
             if (resultCode == RESULT_OK){
                 String return_Data = data.getStringExtra("return_data");
                 Log.d("shuju",return_Data);
             }
             break;
         default:
     }
 }

4.返回结果
在这里插入图片描述
4.Tips
如果不使用secondActivity中的按钮触发返回数据功能
可以直接重写方法onBackPressed, 就能在按下返回键的时候直接将数据返回
代码如下:

 @Override
  public void onBackPressed() {
      Intent intent =  new Intent();
      intent.putExtra("return_data","hah");
      setResult(RESULT_OK,intent);
      finish();
  }

相当于替代了secondActivity中的button2的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值