181005 安卓-Activity(菜单和活动间穿梭)

本文深入解析安卓四大组件之一的Activity,将其类比为浏览器页面,阐述其在安卓应用中的角色与功能。探讨了如何在Activity中创建和响应菜单事件,以及通过显式和隐式Intent实现Activity之间的数据传递和跳转。

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

四大组件中的活动(Activity)

类比到Windows中的话,也许Activity比较接近于浏览器中的页面
每个“视觉窗口”都是一个Activity,都相当于一个新的页面,具备各自的控件、函数事件等等

菜单

在/res/menu/main.xml中创建布局和各个Item的控件
每个item用如下格式被包含在menu中

<item
	android:id="@+id/add_item"
	android:title="添加"
	/>

添加菜单和响应事件需要分别重载onCreateOptionsMenu(Menu menu)onOptionsItemSelected(MenuItem item)两个方法
显示方法需要使用getMenuInflater()来得到MenuInfalter对象,再用它的inflate(id, Menu)方法来指定菜单,第一个参数为目标菜单的id,第二个参数为目标菜单,直接使用传入参数即可
最后记得return True,否则返回值为False的话是不会显示的

响应的方法则更简单了,直接通过参数item.getItemId()取得id以后直接用switch来分别响应即可

活动穿梭

Intent(意图)

Intent是安卓程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
Intent一般可被用于启动活动、服务以及广播等场景。
大致可以分为两种:显式隐式
显式意图指明想要启动的Activity,而隐式意图则只是说明期望完成的动作,具体启动什么Activity由系统来判断(根据哪些Activity声明自己可以完成这些动作)

显式意图

Intent有多个构造函数的重载,其中一个是Intent(Context packageContext, Class<?> cls),第一个参数为启动活动的上下文,后一个参数则是想要启动的目标活动。
构造出意图以后即可使用Activity类中的startActivity()方法

 public void onClick(View view) {
     Intent intent = new Intent(MainActivity.this, ClassesSchedule.class);
     startActivity(intent);
 }
隐式意图

Intent使用Intent(String str)的构造函数,将action作为字符串直接传入
想要启动的Activity则在AndroidManifest.xml中声明自己可完成的action和category

例如

<intent-filter>
	<action android:name="com.example.activitytest.ACTION_TEST" />
	<category android:name="android.intent.category.DEFAULT" />
	//<category android:name="com.example.activitytest.CATEGORY_TEST" />
</intent-filter>
public void onClick(View v){
	Intent intent = new Intent("com.example.activitytest.ACTION_TEST");
	//intent.addCategory("com.example.activity.CATEGORY_TEST");
	startActivity(intent);
	}

其中DEFAULT表示默认category,即intent不添加category时的情况
而如果添加的话则需要使用addCategory方法

另外,隐式意图还可以通过一些给定的动作来启动别的程序的Activity
例如浏览器打开网页,可以通过Intent.ACTION_VIEW)的意图配合intent.setData方法来指定url

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值