第一种是添加菜单文件,然后加载显示菜单。   第二种是通过代码添加菜单,无需文件。
参考链接;http://www.cnblogs.com/smyhvae/p/4133292.html

1、在res文件夹下创建menu文件夹,在里面创建一个菜单文件,我命名为menu,内容如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.menutest.MainActivity" >

<item
android:id="@+id/start"
android:orderInCategory="100"
android:showAsAction="always"
android:title="菜单一"/>


<item
android:id="@+id/over"
android:orderInCategory="200"
android:showAsAction="always"
android:title="菜单二"/>
<!-- 子菜单 ,可不加-->
<item
android:id="@+id/setting"
android:showAsAction="always"
android:orderInCategory="300"
android:title="设置(子菜单)">
<menu>
<item
android:id="@+id/setting1"
android:orderInCategory="300"
android:showAsAction="never"
android:title="声音設置"/>
<item
android:id="@+id/setting2"
android:orderInCategory="400"
android:showAsAction="never"
android:title="背景設置"/>
</menu>
</item>

</menu>
2、在代码中写如下方法       加载菜单,菜单的点击事件则根据菜单item的ID来获取     
//加载菜单 重写onCreateOptionMenu(Menu menu)方法,当菜单第一次被加载时调用
public boolean onCreateOptionsMenu(Menu menu) {
//填充选项菜单(读取XML文件、解析、加载到Menu组件上)
getMenuInflater().inflate(R.menu.menu, menu);
return true;

}
//菜单点击事件 重写OptionsItemSelected(MenuItem item)来响应菜单项(MenuItem)的点击事件(根据id来区分是哪个item)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.start:
Toast.makeText(this, "菜单一", Toast.LENGTH_SHORT).show();
break;
case R.id.over:
Toast.makeText(this, "菜单二", Toast.LENGTH_SHORT).show();
break;
      case R.id.setting1:
        Toast.makeText(this, "声音設置", Toast.LENGTH_SHORT).show();
        break;
      case R.id.setting2:
        Toast.makeText(this, "背景設置", Toast.LENGTH_SHORT).show();
        break;
default:
        break;

}
     return super.onOptionsItemSelected(item);
}

///////////////分割线///////////////////////////////////////////////////////////////////////////////
代码:


public class MainActivity extends Activity {


private static final int START_ITEM = Menu.FIRST; //Menu.FIRST的值就是1
private static final int OVER_ITEM = Menu.FIRST+1;
private static final int SET_ITEM1 = Menu.FIRST+2;
private static final int SET_ITEM2 = Menu.FIRST+3;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


//重写onCreateOptionMenu(Menu menu)方法,当菜单第一次被加载时调用
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//填充选项菜单(读取XML文件、解析、加载到Menu组件上)
// getMenuInflater().inflate(R.menu.main, menu);

//通过代码的方式来添加Menu
//添加菜单项(组ID,菜单项ID,排序,标题)
menu.add(0, START_ITEM, 100, "Start");
menu.add(0, OVER_ITEM, 200, "Over");
//添加子菜单
SubMenu sub1 = menu.addSubMenu("setting");
sub1.add(1, SET_ITEM1, 300, "声音设置");
sub1.add(1, SET_ITEM2, 400, "背景设置");

return true;
}

//重写OptionsItemSelected(MenuItem item)来响应菜单项(MenuItem)的点击事件(根据id来区分是哪个item)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case START_ITEM:
Toast.makeText(this, "开始游戏", Toast.LENGTH_SHORT).show();
break;
case OVER_ITEM:
Toast.makeText(this, "结束游戏", Toast.LENGTH_SHORT).show();
break;

case SET_ITEM1:
Toast.makeText(this, "声音設置", Toast.LENGTH_SHORT).show();
break;

case SET_ITEM2:
Toast.makeText(this, "背景設置", Toast.LENGTH_SHORT).show();
break;

default:
break;
}
return super.onOptionsItemSelected(item);
}
}