Android_Activity和Intent

一、多个Activity之间的关系   

  两个Activity,当想要从第一个Activity跳转到另一个Activity时,通常是在第一个Activity中点下按钮或着其他操作,此时需要调用第一个Activity的startActivity(Intent),跳到哪个Activity以及Activity具体要做什么都是由Intent对象决定的。 

二、Intent的基本作用   

    一个Intent对象可绑定一组信息:接受Intent的组件需要的信息,比如需要调用系统照相机Activity,要告知它照片存放的路径;Android系统需要的信息,比如哪个种类的组件可以处理这个Intent,再比如,告知如何启动Activity。

    Intent对象主要包含以下内容:

    1、Component name(组件名称,可处理这个Intent的组件名称。组件名称是可选的,如果填写,Intent对象会发送给指定组件名称的组件,否则,也可以通过其他Intent信息定位到适合的组件。组件名称是个ComponmentName类型的对象,该对象又包括:目标组件完整的类名,比如:com.example.project.app.FreneticActivity)

    2、Action(命名动作的字符串,用于执行动作,或者,在广播的情况下,表示发生的或者要报告的动作。Intent类定义了一组action常量,见API的Intent.ACTION_*。这些是Intent类预制的一些通用action,还有一些action定义在Android的其他API中。用户可以定义自己的action字符串常量,用于激活自己的应用组件。这需要把应用的包名作为该字符串的前缀,比如:com.example.project.SHOW_COLOR。action名称很像java调用的方法名,下面提到的Data和Extras类似参数和返回值。)

    3、Data(起到表示数据和数据MIME类型的作用。不同的action是和不同的data类型配套的。比如,action是ACTION_EDIT,那么data要包含要编辑的文档URI。如果action是ACTION_CALL,data可能是tel:前缀后面跟电话号码,在比如action是ACTION_VIEW,data是http:开头的URI,则应该是显示或者下载该uri的内容。在匹配 intent到能处理该组件的过程中,data(MIME类型)类型是很重要的。比如,一个组件是可以显示图片数据的而不能播放声音文件。很多情况下,data类型可在URI中找到,比如content:开头的URI,表明数据在设备上,而且有content provider控制。但是有些类型只能显式的设置。setData()方法只能设置data的uri,setType()可设置MIME类型,setDataAndType()即可设置URI也可设置MIME类型。)

    4、Category (包含处理intent组件种类的额外信息。对一个Intent可以设置任意多个category描述,和action类似,Intent类预制了一些category常量,Intent.CATEGORY_*。)

    5、Extras(可以看作一个Map,通过键值对,可为处理Intent组件提供一些附加的信息。可通过put..()和get..()存取信息。也可以获取Bundle对象,然后通过putExtras()和getExtras()方法存取。)

    6、Flags(用于多种情况,在intent增加flug,比如可以指示Android如何启动一个activity,比如是否属于或者不属于当前task,以及,处理完毕后activity的归属。这些flag都定义在Intent类的常量中。) 

三、在一个Activity当中启动另一个Activity的方法   

    a)         在第一个Activity中添加监听器setOnClickListener(),具体的监听方法实现OnClickListener接口,在此方法中为Intent赋值后,startActivity(intent)

    b)        Intent.setClass(从哪个对象.this,跳转到哪个对象.class);

       myButton.setOnClickListener(new MyButtonListener());
       class MyButtonListener implements OnClickListener{
             public void onClick(View v) {
               //生成一个Intent对象
                 //Intent intent = new Intent();
               //intent.putExtra("msg", "testIntent");
               //intent.setClass(Activity02.this, Activity02_other.class);
               //Activity02.this.startActivity(intent);
   
                Uri uri = Uri.parse("smsto://0800000123");
                Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
                intent.putExtra("sms_body", "The SMS Text");
                startActivity(intent);
             }
        } 


四、使用Intent在Activity之间传递数据的基本方法   

    a) 、两个Activity之间通过Intent对象传值:intent.setClass(Activity1.this,OtherActivity.class);键值对的传递:intent.putExtra(“键”,”值”);

    b) 、另一程序中取值:Intent intent = getIntent();String value = intent.getExtra(“键”);

    c)、不在同一个应用程序中的Activity也可以传递值(发送短信)

         Uri uri = Uri.parse(“smsto://0800000123”);

        Intent intent = new Intent(Intent.ACTION_SENDTO,uri);

        Intent.putExtra(“sms_body”,”The SMS Text”);

        startActivity(intent);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值