Android之Intent基本使用

Intent机制是来协助应用之间的交互和通讯,Intent负责对应用中一次操作的动作、动作涉及的数据、附加数据进行描述。

Intent的用途

启动ActivityService

Android系统上发布广播消息

广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。

Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的BroadcaseReceiver, 再或者由startService()/bindservice()来启动一个后台的service.所以可以看出来,intent主要是用来启动其他的activity 或者service,所以可以将intent理解成activity之间的粘合剂。


一、Intent实现无参数的Activity跳转

  显示启动

1.创建一个Intent,指定当前的应用程序上下文以及要启动的Activity

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

2.把创建好的这个Intent作为参数传递给startActivity()方法

   startActivity(intent);


 注意:因为使用了多个Activity,因此需要在AndroidManifest.xml文件中注册这两个Activity。注册Activity应使用<activity>标签,嵌套在<application>标签内部。



2.传递参数

  Bundle类是一个key-value两个activity之间的通讯可以通过bundle类来实现

   在设置传递的Activity中的主要代码

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

   Bundle bundle = new Bundle(); //新建一个Bundle对象

   bundle.putString("name""传递的参数"); //设置传递的数据

   intent.putExtras(bundle); //bundle加入到intent对象中

   startActivity(intent);

在接受数据的Activity中的代码

    Bundle bundle=getIntent().getExtras(); //新建一个bundle来接受数据对象

    String data=bundle.getString("name");  //设置一个对象来接受数据内容

   setTitle(data);  //在标题栏显示接受的数据内容

 

没有传参数时的效果图


传递参数后的效果图


3.返回参数

   在第二个Activity中的主要代码

Intent intent=new Intent();

Bundle bundle2=new Bundle();

bundle2.putString("back""返回的参数");

intent.putExtras(bundle2);

setResult(RESULTCODE,intent);

finish(); //结束SecondActivity并返回值

在第一个Activity主要代码

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

Bundle bundle = new Bundle();

bundle.putString("name""传递的参数");

intent.putExtras(bundle);

startActivityForResult(intent, REQUESTCODE); //这是通过intent启动有返回值的Activity

当子Activity关闭后,父Activity会调用onActivityResult()函数,用了获取子Activity的返回值。

如果需要在父Activity中处理子Activity的返回值,则重载此函数即可。如下所示:

 

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

 if(requestCode==REQUESTCODE){

 if(resultCode==SecondActivity.RESULTCODE){

 Bundle bd=data.getExtras();

 String st=bd.getString("back");

    Toast.makeText(MainActivity.this, st,Toast.LENGTH_SHORT ).show();

 }

 }

 }

注释:REQUESTCODE是一个自定义常量,用来区分MainActivity中是哪一个Button调用SecondActiviy

      RESULTCODE也是一个自定义常量,用来区分SecondActivity是哪一个Button返回的结果。

startActivityForResult(Intent, requestCode)函数,参数Intent用于决定启动哪个Activity,参数requestCode是请求码。因为所有子Activity返回时,父Activity都调用相同的处理函数,因此父Activity使用requestCode来确定哪一个Button调用SecondActivity

效果图:













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值