Android手机专门用一个按键“menu“来显示菜单。
要实现菜单功能,首先要通过方法onCreateOptionMenu来创建菜单,创建方法有两种:一种是直接导入有menu的xml文件,一种是用类Menu的方法直接添加。创建好菜单后,用事件监听器onOptionItemSelected对能够触发的事件进行监听。
下面这个例子有两个Activity,分别有上面的两种方法实现menu,每个menu里都有事件监听器进行Activity跳转和退出。
1.资源文件下的menu文件res/menu/menu.xml
代码如下 | 复制代码 |
android:title="关于"/> android:title="退出"/> |
Activity01.Java
代码如下 | 复制代码 |
packagecom.yarin.android.Examples_04_13; importandroid.app.Activity; importandroid.content.Intent; importandroid.os.Bundle; importandroid.view.Menu; importandroid.view.MenuInflater; importandroid.view.MenuItem; publicclassActivity01extendsActivity { /** Called when the activity is first created. */ @Override publicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /*创建menu*/ public boolean onCreateOptionsMenu(Menu menu) { //MenuInflater class is used to instantiate menu XML files into Menu objects MenuInflater inflater = getMenuInflater(); //设置menu界面为res/menu/menu.xml inflater.inflate(R.menu.menu, menu); return true; } /*处理菜单事件*/ public boolean onOptionsItemSelected(MenuItem item) { //得到当前选中的MenuItem的ID, int item_id = item.getItemId(); switch (item_id) { case R.id.about: /* 新建一个Intent对象 */ Intent intent = new Intent(); /* 指定intent要启动的类 */ intent.setClass(Activity01.this, Activity02.class); /* 启动一个新的Activity */ startActivity(intent); /* 关闭当前的Activity */ Activity01.this.finish(); break; caseR.id.exit: Activity01.this.finish(); break; } returntrue; } } |
Activity02.java
代码如下 | 复制代码 |
packagecom.yarin.android.Examples_04_13; importandroid.app.Activity; importandroid.content.Intent; importandroid.os.Bundle; importandroid.view.Menu; importandroid.view.MenuItem; publicclassActivity02extendsActivity { publicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 设置显示main2.xml布局 */ setContentView(R.layout.main2); } /*创建menu*/ public boolean onCreateOptionsMenu(Menu menu) { //为menu添加内容 menu.add(0, 0, 0, R.string.ok); menu.add(0, 1, 1, R.string.back); return true; } /*处理menu的事件*/ public boolean onOptionsItemSelected(MenuItem item) { //得到当前选中的MenuItem的ID, int item_id = item.getItemId(); switch (item_id) { case 0: case 1: /* 新建一个Intent对象 */ Intent intent = new Intent(); /* 指定intent要启动的类 */ intent.setClass(Activity02.this, Activity01.class); /* 启动一个新的Activity */ startActivity(intent); /* 关闭当前的Activity */ Activity02.this.finish(); break; } returntrue; } } |
本例用到了两个Activity,不要忘记在AndroidManifest.xml中声明。