一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Android开发之菜单(menu)用法实例分析

时间:2022-06-25 23:25:03 编辑:袖梨 来源:一聚教程网

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中声明。

热门栏目