Android Studio 学习(五)——在活动中穿梭

前言

近期工作比较紧凑,另外我也开始直接看DJISDK的文档进行学习,当然基础是肯定不能落下的。接着之前的创建活动,现在要继续学习对活动进行销毁、跳跃的方法。

销毁活动

除了安卓设备的【back】键,用Activity类中的finish()类也是可以进行活动的销毁的。简单来说就是在按钮的点击事件中调用finish()类就可以了,我添加了一个button_2并将在其点击事件中调用了finish()类。

这样,button_2在这个活动中就相当于【back】键的作用了。

Intent——在活动中穿梭

一般来说,应用程序不会只有主活动一个活动,而要启动其它活动或是在多个活动间传递,就需要用到Intent了。

Intent可以分为显式和隐式两种,而使用起来其实就是Intent()类的不同重载。

显式Intent

这是一个通过Intent()启动其它活动的例子,其中第一个参数【FristActivity.this】是作为上下文的活动,第二个参数【SecondActivity.class】是需要启动的活动,当然Intent()本身不具备启动的功能,将其作为【startActivity()】的参数后,程序将在【FristActivity】的基础上打开【SecondActivity】这一活动。

类比来说,【吃饭】和【夹菜】这两个活动,我在【吃饭】时想【夹菜】,【夹菜】完之后继续【吃饭】,就是Intent(【吃饭】,【夹菜】)。

为了方便理解,我认为Intent是活动之间的一种关系,显式Intent的“显”是显在指明了作为上下文的活动的以及需要启动的活动的“名称”。

隐式Intent

和显式Intent相比,隐式Intent的“隐”是隐在不直接指明要启动的活动“名称”,而是指出它的【action】和【category】等信息,系统再去启动对应信息的活动,继续刚才的类比,【夹菜】这个活动可以看做是由【夹】这个动作和【菜】这个类型共两个信息组成的活动。

首先在【AndroidManifest.xml】中指定了活动【SecondActivity】可以响应的【action】和【category】。

然后将对应的【action】传入Intent()类,这次是一个参数的重载,然后在给这个Intent加入对应的【category】,就可以用隐式Intent启动响应的活动了。

当然这里可以注意到,【category】不是参数,而且是用“addCategory()”添加的,事实上它并不唯一,一个活动可以对应不止一个【category】。也就是说,在【AndroidManifest.xml】中为活动指定其它的【category】,再把它加进对应【action】的【Intent】中,同样可以构建两个活动之间的关系,同样可以启动对应的活动。

再类比一下,还是【夹菜】这个活动,我想夹的是【菠菜】,那么【action】=【夹】和【category】=【菠菜】这个信息组合,同样可以说是【夹菜】,同样可以启动【夹菜】这个活动。

Intent的拓展

继续【夹菜】的类比,除了夹我们自己的碗里的菜,还可以夹桌上的菜(甚至是别人的菜),Intent()除了启动当前程序中的活动,还可以启动其它应用程序中的活动。

配置一个新活动【ThirdActivity】,并在【AndroidManifest.xml】中指定了活动【ThirdActivity】可以响应的【action】、【category】、【data】。【data】标签指定了http协议,这样一来,这个新活动【ThirdActivity】就可以响应打开网页的Intent了,当然,不只是这个【ThirdActivity】,系统的浏览器也可以响应,所以就会出现以下这种选择应用程序的情况。

需要注意的是,这里虽然看到【ActivityTest】也可以响应这个Intent,但【ActivityTest】本身并没有添加对这个Intent进行后续操作的功能,所以即使选择【ActivityTest】响应这个Intent,也只是会打开【ThirdActivity】这个活动,不会打开网页,而选择安卓自带的浏览器则可以打开网页。

除了http协议外也可以指定其它协议,从而实现不同的功能,例如用tel拨号、用geo显示位置等。

在不同活动之间传递数据

在同一个活动中传递数据,只需定义一个变量然后对其赋值就可以了,而想要在不同窗口之间传递参数,在C#中可以通过Form类构造方法的重载、外部可访问的中间变量、提供外部可访问的属性等方法实现,而在Android中,只需使用Intent中putExtra()方法的重载就行了。其实就是将活动A的数据存到Intent中,然后利用这个Intent打开活动B,活动B再从Intent中取出数据。

存入时使用的是intent.putExtra()这个函数,其中第一个参数是数据的标识,第二个参数则是要存入的数据。

取出时则是用intent.getStringExtra()这个函数,参数为之前设定的标识。

需要注意的是,存入时使用的intent.putExtra(),根据第二个参数的类型有多种重载,而取出时使用的intent.getStringExtra(),则只能取出【String】类型的数据,也就是说,当【data】的类型改变时,

intent.putExtra("extra_data",dataint);

不需要改变,但intent.getStringExtra()需要换成intent.get***Extra(),***是对应的数据类型,例如整形就是Int。当然所需的参数类型和数量也相应有所改变。

 

还要考虑到的就是用户使用【back】键进行返回这种操作,可以通过重写onBackPressed()事件进行修改。

小结

断断续续的了解了Android中活动的概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值