四大组件中的活动(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